Java 코드의 흐름을 제어하는 데 사용할 수 있는 명령문을 제공하는데 이것을 제어문이라고 한다.
이는 프로그램의 원활한 흐름을 다양하게 제공하기 위함이며, 5개의 제어문과 2개의 제어 키워드가 있다.
if문은 특정 조건에 따라 프로그램을 제어하는 조건문이다.
if문의 조건식을 통해 boolean(true 또는 false)값을 얻는다.
if(조건식){
실행 구문;
}
if-else문은 if 조건이 true이면 if 코드블럭이 실행되고, false이면 else 코드블럭이 실행된다.
if(조건식){
실행 구문; //조건이 true일 때 실행
}else{
실행 구문; //조건이 false이면 실행
}
if-else if-else문은 여러 else if문이 체인처럼 포함된 if문이다.
else문은 if문이나 else if문 조건이 모두 false이면 실행된다.
if(조건식1){
실행 구문; //조건식1이 true일 때 실행
}else if(조건식2){
실행 구문; //조건식2가 true이면 실행
}else if(조건식n){
실행 구문; //조건식n이 true이면 실행
}else{
실행 구문; //조건식들이 모두 false이면 실행
}
중첩 if문은 if문 안에 또 다른 if문을 중첩해서 넣을 수 있으며, 중첩 횟수는 거의 제한이 없다.
하지만 중첩 if문이 많을 수록 프로그램 흐름이나 조건 제어의 복잡도가 높아지기 때문에 지양해야 한다.
if(조건식1){
실행 구문; //조건식1이 true일 때 실행
if(조건식2){
실행 구문; //조건식2가 true이면 실행
}else{
실행 구문; //조건식2가 false이면 실행
}
}else{
실행 구문; //조건식1이 false이면 실행
}
if문의 조건이 true일 경우 실행되는 코드블럭을 중괄호({})로 감싸는 부분은 단일 실행구문의 경우 Optional로 제외해도 오류는 발생하지 않는다.
Switch문은 if-else if문과 유사하다. case문을 통해 여러 조건과 코드 블럭을 포함시킬 수 있다.
switch문 안에 또다른 switch문을 중첩해서 넣을 수 있다.
조건식이 true일 동안 반복문의 코드 블럭을 반복적으로 실행할 때 사용한다.
반복문은 3가지 유형이 있고, 각 유형별로 구문 및 조건을 확인하는 시간 차가 있다.
for(초기화;조건식;증감식){
실행 구문 //조건식이 참이면 실행
}
int sum = 0;
for(int i=1; i<=10; i++){
sum += i;
}
System.out.println("for문 결과 : " + sum);
[결과값]------------------
for문 결과 : 55
for(int i=0, j=100; i<=j; i+=2, j-=3){
// 코드 블록
}
for문 안에 for문을 추가하여 중첩으로 실행할 수 있다.
int width = 10;
int height = 5;
for(int row=0; row<height; row++){
for(int col=0; col<width; col++){
System.out.print("*");
}
System.out.println();
}
[결과값]---------------------------
**********
**********
**********
**********
**********
for(데이터타입 변수명:배열 또는 콜렉션){
실행구문;
}
String[] names = {"홍길동", "김철수", "이순신"};
for(String name:names){
System.out.println(name);
}
while(조건식){
실행 구문 //조건식이 true일 동안 실행
}
int i = 0;
while (i < 5) {
System.out.println("i -> " + i);
i++;
}
[결과값]--------------------
i -> 0
i -> 1
i -> 2
i -> 3
i -> 4
while문 안에 while문을 추가하여 중첩으로 실행할 수 있다.
int colLength = 3;
int rowLength = 10;
int colCount = 0;
int rowCount;
while(colCount < colLength){
rowCount = 0;
while(rowCount < rowLength){
System.out.print("*");
rowCount++;
}
System.out.println();
colCount++;
}
[결과값]-------------------------
**********
**********
**********
while문과 흡사하며, while문이 실행되기 위해 선행되어야 하는 명령을 실행 후 그 데이터를 이용하여 반복작업을 처리하고자 할 경우 사용한다.
do{
실행 구문 //조건식이 true일 동안 실행
}while(조건식);
int num = 0;
do {
System.out.print(num + " ");
num++;
}while(num < 3);
[결과값]---------------
0 1 2
반복문에 레이블을 지정하여 break와 continue 명령어에 레이블을 지정하면 해당 위치로 이동된다.
public static void main(String args[]){
//레이블 first
first:
for(int i=1; i<5; i++){
//레이블 second
second:
for(int j=1; j<3; j++){
System.out.println("i = " + i + "; j = " + j);
if(i == 2){
//현재 loop를 종료하고 first 레이블의 loop가 종료된다
break first;
}
}
}
}