기본 문법 구조
package ch04; // 패키지
public class Grammar { // 클래스
public String name = "JSPStudy"; // 멤버변수
public void jspStudy(int year) { // 메서드
System.out.println("변수 name은 " + name + "입니다.");
System.out.println("변수 year은 " + year + "입니다.");
System.out.println(name + year);
}
public static void main(String[] args) { // 메인메서드
// TODO Auto-generated method stub
int year = 2013; // 지역변수
Grammar g = new Grammar(); // 객체선언, 생성
g.jspStudy(year); // 메서드 호출
}
}
- 패키지 : 클래스를 그룹화하는 데 사용되는 기본적인 개념
- 클래스 : 자바프로그램의 기본 단위
- 멤버변수 : 클래스에 속하는 변수
- 메서드 : 클래스를 정의하는 괄호 안에 메서드를 정의하며, 프로그램이 처리할 코드를 기술
- 메인 메서드 : 프로그램을 실행할 때 진입점. JVM은 메인 메서드 안에 적힌 모든 코드를 가장 먼저 실행함
- 지역변수 : 멤버변수와 달리 선언한 메서드 내부에서만 유효한 변수
- 객체 선언, 생성 : 클래스명 객체이름 = new 클래스명(); 형식으로 선언
- 메서드 호출 : 해당 클래스에서 선언한 메서드를 호출
변수와 데이터 타입
변수
프로그래밍에서 데이터를 저장하고 관리하기 위한 기본적인 개념
변수를 사용하기 위해서는 세 가지 방법이 필요하다.
- 선언 : 변수의 이름과 타입을 정의하는 절차
- 할당 : 변수에 값을 할당
- 참조 : 선언하고 값을 할당한 변수를 가리키는 행위
String name;
name = "JSP";
System.out.print(name);
배열
다수의 값을 동시에 담을 수 있는 변수
다음과 같이 두 가지 형태로 선언할 수 있다.
char a[], b = new char[5]; // a[]는 배열이 되고, b는 char 타입 일반 변수가 된다
char[] a, b = new char[5]; // a, b 모두 배열로 선언된다
선언과 동시에 값을 할당하는 방법은 다음과 같다.
char a[] = { '가', '나', '다', '라' };
연산자
산술연산자와 증감연산자
산술연산자는 '+, -, *, /, %'이 있으며 숫자와 변수 모두 적용 가능하다.
증감연산자는 변수의 값을 1씩 증가시키거나 감소시키는 연산자로 '++, --'가 있으며 변수에만 적용 가능하다.
증감연산자는 전위와 후위에 따라 계산 결과가 달라진다.
int a = 5;
System.out.println((++a)); // 선증가 후연산, 6
System.out.println((--a)); // 선감소 후연산, 5
System.out.println((a++)); // 선연산 후증가, 5 출력 a = 6
System.out.println((a--)); // 선연산 후감소, 6 출력 a = 5
비교연산자 참고
https://crystalpak.tistory.com/9
논리연산자 참고
https://crystalpak.tistory.com/10
대입연산자 참고
https://crystalpak.tistory.com/11
※ &, | 연산자가 두 개일 때와 하나일 때의 차이점
&& : 앞의 값을 연산한 후 'false'면 뒤의 값을 연산하지 않고 'false'를 반환
& : 앞의 값이 'false'라도 뒤의 값을 연산
|| : 앞의 값을 연산한 후 'true'면 뒤의 값을 연산하지 않고 'true'를 반환
| : 앞의 값이 'true'라도 뒤의 값을 연산
제어문
프로그램의 실행여부, 순서, 방식을 제어하는 문장이다.
조건문
if 문
if(조건) {조건이 true일 때 실행할 코드}
예제
package ch04;
public class If {
public static void main(String[] args) {
// TODO Auto-generated method stub
int score = 100;
if (score == 100) {
System.out.println("점수는 100점 입니다.");
}
}
}
if-else 문
if (조건) {조건이 true일 때 실행할 코드} else {조건이 false일 때 실행할 코드}
예제
package ch04;
public class Ifelse {
public static void main(String[] args) {
// TODO Auto-generated method stub
int score = 90;
if (score == 100) {
System.out.println("점수는 100점 입니다.");
} else {
System.out.println("점수는 100점이 아닙니다.");
}
}
}
else if 문
if (조건) {조건이 true일 때 실행할 코드}
else if (조건2) {조건2이 true일 때 실행할 코드}
else if (조건3) {조건3이 true일 때 실행할 코드}
...
예제
package ch04;
public class Elseif {
public static void main(String[] args) {
// TODO Auto-generated method stub
int score = 90;
if (score == 100) {
System.out.println("점수는 100점 입니다.");
} else if (score == 90) {
System.out.println("점수는 90점 입니다.");
}
}
}
switch 문
switch (전달인자) {
case 조건1:
조건1이 해당될 때 실행될 코드
break;
case 조건2:
조건2가 해당될 때 실행될 코드
break;
default:
모든 조건이 해당되지 않을 때 실행될 기본값 코드
// break 생략가능
}
예제
package ch04;
public class Switch {
public static void main(String[] args) {
// TODO Auto-generated method stub
int score = 80;
switch (score) {
case 100:
System.out.println("100점");
break;
case 90:
System.out.println("90점");
break;
case 80:
System.out.println("80점");
break;
default:
System.out.println("70점");
}
}
}
반복문
for 문
for (int i = 0; i < 반복횟수; i++) {반복할 코드}
예제
package ch04;
public class For {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i <= 10; i++) {
System.out.println(i);
if (i == 10) {
System.out.println("a가 " + i + "이므로 for문이 종료됩니다.");
}
}
}
}
while 문
while (조건) {반복할 코드}
예제
package ch04;
public class While {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 1;
while (a <= 10) {
System.out.println(a);
if(a == 10) {
System.out.println("a가 " + a + "이므로 while문은 종료됩니다.");
}
a++;
}
}
}
do-while 문
do {반복할 코드} while (조건);
예제
package ch04;
public class Dowhile {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 11;
do {
System.out.println(a);
if (a == 10) {
System.out.println("a가 " + a + "이므로 while문은 종료됩니다.");
}
a++;
} while (a <= 10);
}
}
조건에 만족하지 않아도 최소 1번은 실행된다는 특징이 있어 결과는 11이 출력된다.
break 문, continue 문
break는 제어문을 종료시킨다.
continue는 제어문의 하위코드를 생략 후 다시 선언부로 돌아간다.
예제
package ch04;
public class Break {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1; i <= 10; i++) {
System.out.println(i);
if (i == 5) {
break;
}
}
}
} // 5까지 출력되고 끝남
package ch04;
public class Continue {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1; i <= 50; i++) {
if (i%2 == 0) {
continue;
}
System.out.println(i);
}
}
} // 홀수만 출력
클래스 및 객체
클래스
객체 지향 프로그래밍(OOP)의 핵심 개념으로, 객체를 생성하기 위한 설계도 또는 템플릿이다.
Java와 같은 객체 지향 언어에서 클래스는 데이터를 구조화하고, 관련된 동작(메서드)을 정의하는 데 사용한다.
객체
객체 지향 프로그래밍(OOP)에서 클래스의 인스턴스(instance)로, 데이터와 기능(메서드)을 결합한 구조이다.
프로그래밍에서 상태(state)와 행동(behavior)을 갖는 기본적인 단위이다.
생성자
생성자는 클래스가 메모리상에 객체를 생성시켰을 때 가장 먼저 수행할 작업을 기술하는 메서드이다.
생성자는 클래스와 같은 이름을 가지며 리턴 값을 반환할 필요가 없는 특징을 가진다.
package ch04;
public class Constructor {
public Constructor() {
int a = 1;
System.out.println(a);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Constructor c = new Constructor();
}
}
멤버변수
클래스에 속하는 변수이다. 따라서 클래스에 속하는 모든 메서드에서 사용이 가능하다. 멤버변수의 특징은 참조를 위한 초기화가 필요 없다는 점이다. 멤버변수를 선언하고 값을 할당하지 않으면 자동으로 null 값이 참조된다.
package ch04;
public class Member {
String m;
String m1 = "멤버변수 입니다.";
public Member() {
String m = "지역변수 입니다.";
System.out.println(m);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Member member = new Member();
System.out.println("초기화하지 않은 멤버변수 : " + member.m);
System.out.println("초기화한 멤버변수 : " + member.m1);
}
}
출력 결과
지역변수 입니다.
초기화하지 않은 멤버변수 : null
초기화한 멤버변수 : 멤버변수 입니다.
접근 제어자
클래스와 클래스, 패키지와 패키지간의 접근 권한을 지정하는 예약어이다.


private
동일한 클래스 내에서 접근 가능
package ch04;
class Outsider {
private String s ="Outsider";
}
public class Private {
public static void main(String[] args) {
// TODO Auto-generated method st
Outsider o = new Outsider();
System.out.println(o.s);
}
}
출력 결과
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The field Outsider.s is not visible
at ch04.Private.main(Private.java:10)
protected
동일한 패키지와 하위 클래스에서 접근 가능
package ch04;
class Outsider2{
protected String s = "Outsider";
}
public class Protected extends Outsider2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outsider2 o = new Outsider2();
System.out.println(o.s);
}
}
public
모든 패키지, 클래스에서 접근 가능
package ch04;
import ch04.Parents;
public class Public extends Parents {
public static void main(String[] args) {
// TODO Auto-generated method stub
Parents p = new Parents();
System.out.println(p.par);
}
}
Parents.java
package ch04;
public class Parents {
public String par = "부모클래스의 변수입니다.";
}
static, Final
static
Java에서 변수, 메서드, 블록, 내부 클래스 등에 적용할 수 있는 키워드로, 클래스 수준에서 동작하는 요소를 정의.
정적 멤버는 클래스에 속하며, 객체의 인스턴스와는 독립적으로 존재한다. 따라서 객체를 생성하지 않고도 접근할 수 있다.
package ch04;
public class Static {
static String jspStudy = "static으로 선언된 변수입니다.";
private static void jspStudy() {
String jspStudy = "static으로 선언된 메서드입니다.";
System.out.println(jspStudy);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(jspStudy);
Static.jspStudy();
}
}
final


import 및 주석
import
자바의 클래스에서 외부 패키지에 속해있는 클래스를 참조하기 위해서는 'import' 예약어와 함께 패키지명, 클래스명을 기술한다.

주석
프로그래밍 코드에서 설명을 추가하는 데 사용되는 텍스트로, 컴파일러나 인터프리터에 의해 무시된다.
주석의 주요 목적은 코드의 가독성을 높이고, 다른 개발자나 미래의 자신이 코드를 이해하는 데 도움을 주기 위함이다.

'Web Programming > JSP' 카테고리의 다른 글
| [JSP] include Directive (1) | 2024.09.30 |
|---|---|
| [JSP] Page Directive (0) | 2024.09.30 |
| [JSP] JSP 동작원리(톰켓)와 서블릿 (2) | 2024.09.27 |
| [JSP] 이클립스 설치 (3) | 2024.09.26 |
| [JSP] Tomcat 설치 (1) | 2024.09.26 |