Web Programming/JSP

[JSP] JAVA 기초 문법

IT수정 2024. 9. 27. 16:13

기본 문법 구조

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