Java는 위에서 부터 아래로, 왼쪽에서 오른쪽으로 코드가 실행되는데,
상황에 따라서 특정 코드를 실행하지 않거나 반복하는 등 실행 흐름을 변경해야 하는 경우가 있다. 제어문을 사용해서 코드의 흐름을 제어하고,
제어문은 선택문과(if, if else, switch)
반복문으로(for, for each, while, do while) 나눌 수 있다.
Boolean result1 = true;
Boolean result2 = false;
// 1
if(result1) System.out.println("선택문");
// 2
if(result1){
if(result1) System.out.println("선택문");
}
// 3
if(result1){
if(result2) System.out.println("선택문");
else System.out.println("else 실행");
}
// 4
if(result1){
if(result2) System.out.println("선택문");
else if (result1) System.out.println("else if 실행");
else System.out.println("else 실행");
}
- if 문의 기본 형태는 1번 처럼
if (조건) {실행코드}
이며 실행코드가 1줄일 경우 {}를 생략할 수 있다.- 2번처럼 if문을 중첩해서 사용할 수 있으며
- 3번은 2번에서 else를 추가해서
if(result2)
가 거짓이기 때문에System.out.println("else 실행");
이 실행된다- 4번은 else if 를 사용해서 다른 조건을 붙였다 첫번째 블럭
if(result1)
가 참이기 때문에 안에 코드가 실행되며 처음 만난if(result2)
는 거짓,else if (result1)
가 참이기 때문에System.out.println("else if 실행");
가 실행된다.
if문에서 (조건)에는 반드시 참, 거짓으로 판별할 수 있는 값이 들어와야 한다.
int result = 7;
switch(result){
case 1: System.out.println("result = 1");
break;
case 5: System.out.println("result = 5");
break;
case 7: System.out.println("result = 7");
break;
default : System.out.println("result = ?");
break;
}
- switch문의 기본 형태는
switch(조건) case 값 : 실행코드
로 이루어져 있다. 각 case 마다break;
를 해주지 않으면 switch문에서 빠져나오지 않고 아래 코드가 전부 실행되므로 꼭 써줘야 한다.deault :
는 case들의 조건이 다 맞지 않았을 경우 실행됩니다.- 위 코드의 경우는
case 7:
의System.out.println("result = 7");
가 실행되고break;
를 만나 switch문이 종료된다.
int[] arr = {1, 2, 3, 4, 5};
int length = arr.length;
// 1
for(int i = 0; i < length; i++){
System.out.println(arr[i]);
}
// 2
for(int i: arr){
System.out.println(arr[i]);
}
- 1번째 for문의 기본 형태는
for(변수 초기화; 조건; 증감) {반복 실행 코드}
로 이루어져 있다. 사용할 변수는 for문이 처음 시작될 때 한번만 초기화 되며 이후 조건을 거친 뒤 조건이 참일 경우 변수가 증감 되며{}
안에 코드들이 반복된다.- 사용할 변수는 여러개가 될 수 있으며 for문 밖에서 선언동시에 초기화를 시켜 사용하거나 할 수 있으며 변수 초기화나, 증감 부분을 생략 가능하다.
- 2번째 for each문의 기본 형태는
for(변수 초기화 : 배열, ArrayList){반복 실행 코드}
이며 변수의 타입을var
로 지정하여 사용할 수 있다.(컴파일러가 변수의 타입을 대입된 리터럴로 추론함)
int a = 10;
while(a>0){
// 반복할 코드 구현
return null;
}
- while, do while로 나눌 수 있으며 while다음에 오는 ()안에는 조건이 들어가는데 이 조건이 참일 경우 반복된다. do while에 경우에는 최초 한번은 무조건 코드가 실행되고 조건을 확인한다.
- while의 경우 for문에 비해 무한 루프에 빠지기 쉽기 때문에 반복을 멈출 return을 잘 작성해줘야 한다.
String[] stringArr = {"apple", "banana", "strawberry" ,"blueberry"};
for(String i : stringArr){
System.out.println(i);
// stringArr에 들어있는 value가 하나식 출력
}
- 기존에 쓰던 for문의 형태와 비슷하지만 for(변수타입 변수명 : 객체)의 형태로 이루어져 있으며 객체는 반복을 할 수 있는 형태인 Array, Collections 형태여야 한다.