티스토리 뷰
📌 조건문
조건식과 문장을 포함하는 {블록}으로 구성되어 있으며, 조건식의 연산 결과에 따라 실행문이 달라져 프로그램의 실행 흐름을 변경할 수 있다. 조건식의 결과는 반드시 참이나 거짓 이어야 한다. 조건문 마지막에는 세미콜론을 붙이지 않으니 주의하자.
👉 if 문
1. if 문
if (조건식) {
// 조건식이 참일 때 실행될 문장
}
✔ 조건식이 참이라면, if문 내부의 명령문이 실행.
✔ 조건식이 거짓이라면, if문 내부의 명령문이 실행되지 않고 다음 명령문으로 이동한다.
2. if-else문
if (조건식) {
// 조건식이 참일 때 실행될 문장
}else {
// 조건식이 거짓인 경우 실행될 문장
}
✔ 조건식이 참이라면, if문 내부의 명령문이 실행.
✔ 조건식이 거짓이라면, if문 내부의 명령문이 실행되지 않고 다음 명령문인 else문으로 이동한다.
✔ else문은 앞서 확인한 조건식이 거짓일 때 실행된다.
3. if-else if문
if (조건식A) {
// 조건식A가 참일 때 실행될 문장
} else if (조건식B) {
// 조건식B가 참일 때 실행될 문장
} else {
// 조건식A와 B가 모두 거짓일 때 실행될 문장
}
✔ 여러 조건을 확인해야 할 때 if-else if문을 사용한다
✔ 조건식 A가 참이면 if문 내부의 명령문이 실행되고, 거짓이면 다음 명령문인 else if문으로 이동한다.
✔ 조건문 B가 참이면 else if문 내부의 명령문이 실행되고, 거짓이면 다음 명령문인 else문으로 이동한다.
✔ else문은 앞서 확인한 조건식이 모두 거짓일 때 실행되므로, else문 내부의 명령문이 실행된다.
4. 중첩 if문
if(age<20){
if(age<8){
System.out.println("어린이");
}else if(age<13){
System.out.println("초등학생");
}else if(age<17){
System.out.println("중학생");
}else{
System.out.println("고등학생");
}
}
✔ if문 안에 또 다른 if문을 포함시킬 수 있는데, 이를 중첩 if문이라고 한다.
✔ 선행 조건을 확인해야 하는 경우 자주 사용되며, 여러 명령문이 중첩되어 있으므로 들여 쓰기에 주의해야 한다.
👉 switch 문
int i=4;
switch(i) {
case 1: 실행문1 break;
case 2: 실행문2 break;
case 3: 실행문3 break;
default: 실행문;
}
✔ 조건의 결과가 참과 거짓 둘 뿐인 if문과 달리, switch문은 여러 가지 경우들을 대비할 수 있다.
✔ switch문은 조건식을 확인해, 조건식의 결과와 일치하는 case문으로 이동해 해당 명령문을 수행한다.
✔ 만약 조건식과 결과가 일치하는 case문이 없는 경우, default문의 명령문을 수행한다.
✔ break문이나 swtich문의 끝을 만나면 switch문을 빠져나간다.
✔ case문의 명령문 뒤에 break문이 없으면 일치하는 조건을 찾았어도 이후의 명령문을 계속 수행하므로 주의하자.
int month = 12;
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
System.out.println("31일");
break;
case 2:
System.out.println("28일");
default:
System.out.println("30일");
}
✔ case문의 명령문 뒤에 break문이 없으면 일치하는 조건을 찾았어도
✔ 이후의 명령문을 계속 수행은 성질을 이용해 여러 조건에 같은 명령문을 정해줄 수 있다.
📌 반복문
반복문은 어떠한 작업이 반복적으로 수행되도록 해야 할 때 사용되며, 반복문의 종류로는 for문과 while문, do-while문이 있다. 조건문과 마찬가지로 조건식의 결과가 참이거나 거짓이어야 하며, 조건이 거짓이 될 때까지 {블록} 내부의 명령문을 반복 실행한다. 조건식을 항상 true로 하여 무한 반복을 의도하여 사용하기도 한다.
👉 for 문
1. for문
for(초기식; 조건식; 증감식){
//조건식의 결과가 true인 경우 반복 실행할 명령문
}
✔ 반복 횟수를 알고 있을 때 적합하다.
✔ 먼저 초기화가 실행되고, 조건의 결과가 참이라면 {블록} 내부로 이동하여 명령문이 실행된다.
✔ {블록}의 마지막 명령문까지 실행한 뒤, 증감식으로 이동해 초기값을 증가 또는 감소시킨다.
✔ 그리고 다시 조건식으로 돌아가 조건의 결과를 확인한다.
✔ 조건의 결과가 참인 경우 계속 반복하고, 거짓인 경우 for문을 빠져나간다.
2. 중첩 for문
for(int i=1; i<10; i++){
for(int j=2; j<10; j++){
System.out.printf(j+"x"+i+"="+(j*i)+"\t");
}System.out.println();
}
✔ 중첩 for문을 사용하면 행과 열을 구분해서 사용해야 하는 경우나 변수가 2개 이상 필요한 경우를 대응할 수 있다.
3. 향상된 for문
int[] arr = {10,20,30,40,50};
//일반 for문
for(int i=0; i<arr.length; i++){
System.out.printf(arr[i]+"\t");
}
//향상된 for문
for( int i : arr){
System.out.printf(i+"\t");
}
✔ 배열에 저장된 값을 모두 출력하기 위해서는 배열의 길이만큼 반복하는 for문을 만들어 사용한다.
✔ JDK 1.5 부터는 일반 for문보다 더 향상된 성능의 for문을 사용할 수 있는데, 콜론 for문이다.
✔ 콜론을 기준으로 좌항의 변수에 배열의 값을 순서대로 하나씩 대입하여 사용할 수 있다.
✔ 콜론 for문은 배열의 값을 읽어올 수는 있지만, 배열에 저장된 값을 변경할 수 없으니 주의하자.
👉 while 문
1. while문
while(조건식){
// 조건식의 연산결과가 참인 동안 반복할 문장
// 증감식
}
✔ while문은 조건식의 결과가 거짓이면 반복을 벗어나고, 참이라면 명령문을 반복한다.
✔ 조건식이 참일 때 반복한다는 점에서 for문과 비슷하지만, while문은 증감식이 {블록} 내부에 있다는 차이가 있다.
✔ 그리고 초기식,조건식,증감식을 생략할 수 없는 for문과 달리, while문은 상황에 따라 증감식을 생략하기도 한다.
2. do-while문
do{
// 조건식의 연산결과가 참인 동안 반복할 문장
// 증감식
}while(조건식);
✔ 다른 반복문은 조건을 확인하고 명령을 실행하지만 do-while문은 일단 실행한 뒤, 조건을 확인한다.
✔ 그렇기 때문에 무조건 한번은 명령문을 실행한다.
3. 무한 반복
Scanner sc = new Scanner(System.in);
int num;
int sum=0;
while(true){
num = sc.nextInt();
if(num!=0) sum+=num; //입력값이 0이 아니면 sum에 더한다
else break; //입력값이 0이면 무한 반복을 종료
}
System.out.println("합계 : "+sum); //합계 출력
✔ while문은 조건식에 true를 넣어 손쉽게 무한 반복문을 만들 수 있다.
👉 break문과 continue문
✔ break문은 가장 가까운 반복문에서 빠져나올 때 사용한다.
✔ continue문은 현재 진행 회차를 포기하고 다음 회차로 이동한다.
✔ continue문 이하의 명령문을 실행하지 않고 증감식을 실행한다.
public class Main {
public static void main(String[] args) {
//Loop1
Loop1:
for(int i=1; i<=3; i++) {
for(int j=1; j<=100; j++){
System.out.println("i="+i+", j="+j);
if(j==3) {break Loop1;}
//조건이 맞으면 바깥쪽 for문을 빠져나온다 (Loop1로 이동)
}
}
System.out.println();
//Loop2
Loop2:
for(int i=1; i<=3; i++) {
for(int j=1; j<=100; j++){
if(j==3) {continue Loop2;}
//하던 작업을 중단하고 외부for문의 증감식으로 이동 (Loop2로 이동)
System.out.println("i="+i+", j="+j);
}
}
System.out.println();
}
}
✔ 위와 같이 원하는 곳에 label을 추가해 label break문이나 label continue문을 사용할 수 있다.
✔ 일반적으로 break문은 하나의 반복문을 빠져나가고, continue문은 하나의 반복 진행을 건너뛴다.
✔ label을 붙여줌으로써 하나 이상의 반복을 벗어나거나 건너뛸 수 있다.
[참고] 자바의 정석
'BackEnd > JAVA' 카테고리의 다른 글
[Ch.05] 2. String 배열, 다차원 배열 (0) | 2021.03.14 |
---|---|
[Ch.05] 1. 배열 (0) | 2021.03.11 |
[Ch.03] 5. 기타 연산자 (0) | 2021.02.28 |
[Ch.03] 4. 비교 연산자/논리 연산자 (0) | 2021.02.28 |
[Ch.03] 3. 산술 연산자 (0) | 2021.02.28 |