- 문(Statement)과 표현식(Expression)
컴퓨터는 상태 변경 기계이다. 즉, 메모리의 상태를 변경한다는 것이다.
프로그래밍 언어로 이 컴퓨터에게 명령을 해서 메모리의 상태를 변경하기 위해서 개발자는 논리를 구성하는 문과 값으로 평가될 수 있는 표현식을 통해 프로그램을 작성해 나간다.
따라서, 프로그램은 문이라는 기본 단위로 구성된다고 볼 수 있다.
int a = 0;
a = a + 5;
여기서 int a 이는 변수 a를 선언함으로써 메모리를 할당 받게 되고 메모리의 상태를 변경하게 되므로 문으로 구분한다.
a = a + 5; 에서 수행하는 대입(할당) 연산은 a + 5를 값으로 평가할 수 있어 표현식으로 구분한다.
- 블록(Block)
Java에서는 반복문, 조건문 등과 같이 문을 블록으로 묶어야 할 때, 중괄호를 사용한다.
이 때, 블록 안에는 문과 또 다른 블록이 들어갈 수 있으며,
{
int a;
…
{
int b;
}
}
같은 레벨의 블록끼리는 같은 이름의 변수를 가질 수 있다(동일한 변수는 아님)
{
int a;
...
}
{
int a;
...
}
- 문의 종류
프로그램은 커질수록 논리가 복잡해진다.
따라서, 구조화된 흐름 제어가 필요하며, 문을 사용하여 제어할 수 있고, Java는 프로그램의 흐름 제어를 위해 3가지 문을 제공한다.
- 선택문: if 문, switch 문
식의 값을 선택하고 그 선택에 따라 문을 실행.
- 반복문: while 문, do 문, for 문, for-each 문
특정 조건이 true인 동안 반복적으로 실행
- 분기문: break 문, continue 문
제어를 다른 문으로 옮김
선택문
- if 문
조건문의 결과에 따라 블록의 실행 여부를 결정하는 문이다.
조건식의 결과는 항상 boolean 값을 반환해야한다.
if (month == 2){
System.out.println("이 달은 28일입니다.");
} else if (month == 4){
System.out.println("이 달은 30일입니다.");
} else if (month == 6){
System.out.println("이 달은 30일입니다.");
}
...
else {
System.out.println("이 달은 31일입니다.");
}
먼저 if 절의 조건식이 참인지 검사하고,
if 절의 조건식이 거짓이면 else if 절의 조건식이 참인지 검사하고,
else if 절의 조건식도 거짓이라면 마지막으로 else 문이 실행된다.
else if는 if 와 else(없어도 됨) 사이에서만 원하는 만큼 여러 번 사용할 수 있다.
- switch 문
switch 문은 if 가 필요한 복잡한 조건을 쉽고 가독성 좋게 만들어준다.
예를 들어 위 if 문 예시를 switch 문으로 바꾸면
switch (month){
case 2:
System.out.println("이 달은 28일입니다.");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("이 달은 30일입니다.");
break;
default:
System.out.println("이 달은 31일입니다.");
break;
}
switch 절의 표현식 결과값과 일치하는 case 레이블 상수가 나올 때까지 다음 명령문으로 이동한다.
case 레이블 상수와 일치하는 경우 해당 case 안의 문을 수행하고 다음 명령문으로 이동하는데 원치 않는 경우 break 문을 통해 빠져나가야한다.
switch 의 끝까지 일치하는 case 레이블 상수가 없다면 default 내의 명령문을 수행하고 블록을 빠져나간다.
모두 같은 명령문을 수행하고자 한다면 예시의 case 4, 6, 9, 11의 경우처럼 그룹화도 가능하다.
단, case 4: case 4: 와 같이 중복된 레이블은 컴파일 에러가 발생한다.
'Java' 카테고리의 다른 글
[Java] 문과 표현식 (3) (0) | 2024.02.20 |
---|---|
[Java] 문과 표현식 (2) (2) | 2024.02.20 |
[Java] 컬렉션 프레임워크(Collection Framework), List, Set, Map (0) | 2024.01.19 |
[Java] 변수 (0) | 2024.01.19 |
[Java] 자바, JVM, JRE, JDK (1) | 2024.01.19 |