자바 인터프리터는 위에서 아래로 오른쪽에서 왼쪽으로 프로그램을 읽어갑니다. 그런 프로그램의 흐름을 변경할 수 있는게 제어문입니다.
지정한 조건이 만족할 시에 지정한 블록 {} 안에 있는 코드가 실행됩니다.
if(조건식) { 조건이 참일 경우 실행되는 코드; }
만약 if문 안에 코드가 한 줄이라면 {}은 생략이 가능합니다.
기본적인 if문에서는 참일 경우만 실행이 됬다면, if-else문은 거짓일 때도 실행할 수 있습니다.
즉, 조건식이 참일 경우와 거짓일 경우의 실행되는 코드들을 나눌 수 있다는 것입니다.
if(조건식) { 참일 경우; } else { 거짓일 경우; }
여러가지 조건이 필요할 때에는 else if()를 사용하여 또 다른 조건식을 사용할 수 있습니다.
if와 if-else와 달리 변수에 대해 평가를 하고 이를 분기할 수 있습니다.
평가 당하는 변수는 원시형 타입(int, byte, char)일 수 있고, Enum형 혹은 String, Wrapper(Integer, Byte, Character) 클래스도 가능합니다.
switch(변수) { case 값 A : 변수가 값 A에 해당하는 경우; break; case 값 B : 변수가 값 B에 해당하는 경우; break; default : 어떠한 값에도 해당하지 않는 경우; break;
위 예시는 다음과 같이 if-else 문으로 변경 가능합니다.
if(변수 == 값 A) { 변수가 값 A에 해당하는 경우; } else if (변수 == 값 B) { 변수가 값 B에 해당하는 경우; } else { 어떠한 값에도 해당하지 않는 경우; }
설정한 조건이 만족 될 때까지 지정한 코드 블럭이 계속해서 수행됩니다.
for(초기식; 조건식; 증감식) { 반복 될 코드; }
JDK 5.0 이상부터 배열 혹은 컬렉션의 순회시에 다음과 같이 조금 더 향상된 for 문을 사용할 수 있습니다.
for(타입 변수명 : 배열/컬렉션) { 반복 될 코드; }
기존 for문의 배열 인덱스 문제(ArrayIndexOutOfBoundsException 예외)를 해결해준다는 장점이 있습니다.
String[] array = {"a", "b", "c", "d", "e"}; for(String obj : array) { System.out.println(" "+ obj); }
출력 : a b c d e
특정 조건이 참일 경우에 지정한 코드 블럭이 계속해서 수행되는 구문입니다.
while(조건식) { 조건식이 참일 경우 반복되는 코드; }
조건식이 항상 참일 경우에는 계속해서 해당 코드들이 실행되므로 다음 명령들을 수행할 수 없는 상태가 됩니다.
while 문이 조건식을 먼저 판별하고 코드를 수행했다면, do-while 문은 먼저 코드블럭을 수행하고 조건을 판별합니다.
do { 조건식이 참일 경우 반복되는 코드; } while(조건식);
조건문에서 프로그래머의 의도에 의해 중간 흐름을 바꿀 수 있는 구문
break 키워드를 만났을 땐 해당 루프를 빠져나간다.
public void myTest(){ for (int i = 1; i <= 10 ; i++) { if (i % 5 == 0) { break; //i가 5일 때 루프 종료 } else { System.out.print(i+" "); } } System.out.println("메서드 종료"); //루프 이후 문장 실행 }
1 2 3 4 5
메서드 종료
continue 키워드를 만났을 때 해당 루프내의 다음 조건식으로 넘어갑니다.
public void myTest(){ for (int i = 1; i <= 10 ; i++) { if (i % 5 == 0) { continue; //i가 5라면, 아래의 문장을 실행하지 않고 i=6 조건식으로 넘어간다. } else { System.out.print(i+" "); } } System.out.println("메서드 종료"); }
1 2 3 4 6 7 8 9
메서드 종료
return 키워드를 만나면 해당 루프와 루프를 감싸고 있던 메서드까지 종료됩니다.
public void myTest(){ for (int i = 1; i <= 10 ; i++) { if (i % 5 == 0) { return; //myTest() 메서드가 종료된다. } else { System.out.print(i+" "); } } System.out.println("메서드 종료"); }
1 2 3 4
https://raccoonjy.tistory.com/10
https://juntcom.tistory.com/118
https://slow-and-steady-wins-the-race.tistory.com/9