챕터에 들어가기 이전에 조건문은 조건에 따라 다른 문장이 수행되도록 하고,
반복문은 특정 문장들을 반복해서 수행한다.
1. 조건문 - if, switch
조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있으며,
조건식의 연산결과에 따라 실행할 문장이 달라져서 프로그램의 실행흐름을 변경할 수 있다.
1.1 if 문
if문은 '만일 ~이라면...'이므로 '만일(if) 조건식이 참(true)이면 괄호{} 안의 문장들을 수행하라.'는
의미로 이해하면 된다.
if (조건식) {
// 조건식이 참일 때 수행될 문장들을 적는다.
}
자바에서 조건식의 결과는 반드시 true 또는 false이어야 한다는 것을 잊지 말자.
1.2 if-else문
조건식의 결과가 참이 아닐 때, 즉 거짓일 때 else블럭의 문장을 수행하라는 뜻이다.
1.3 if-else if문
처리해야할 경우의 수가 셋 이상인 경우!
if (조건식1) {
// 조건식 1의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식2) {
} else if (조건식3) { //여러 개의 else if를 사용할 수 있다.
} else { //마지막에는 보통 else블럭으로 끝나며, else블럭은 생략가능.
// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}
1.4 중첩 if문
if문의 블럭 내에 또 다른 if문을 포함시키는 것이 가능한데 이것을 중첩 if문이라고 부르며
중첩의 횟수에는 거의 제한이 없다.
if (num >= 0) {
if (num != 0) {
sign = '+';
} else {
sign = '-';
}
}
1.5 switch문
(오로지 동등비교 연산만 가능)
switch문은 조건식을 먼저 계산한 다음, 그 결과와 일치하는 case문으로 이동한다.
이동한 case문 아래에 있는 문장들을 수행하며, break문을 만나면 전체 switch문을 빠져나가게 된다.
(계산결과 ==> boolean 값)
switch (조건식) {
case 값1 :
//조건식의 결과가 값1과 같을 경우 수행될 문장들
break;
case 값2 :
break;
default :
}
만일 조건식의 결과와 일치하는 case문이 하나도 없는 경우에는 default문으로 이동한다.(=if문에서의 else역할)
+값에 올 수 있는것 => 리터럴, 상수(정수,문자열)
각 case문의 마지막에 break문을 빼먹는 실수를 하지 않도록 주의해야한다.(경우에 따라서는 생략하는 경우도 있음
switch문의 제약조건
1. switch 문의 조건실 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
2.1 for문
for문은 반복 횟수를 알고 있을 때 적합하다.
for문은 4부분으로 이루어져있으며, 조건식이 참인 동안 블럭{}내의 문장들을 반복하다 거짓이 되면 반복문을 벗어난다.
for (초기화;조건식;증감식) {
//조건식이 참일 때 수행될 문장들을 적는다.
}
for문의 수행순서
for (1.초기화;2.조건식;4.증감식) {
3.수행될 문장
}
이러다가 조건식이 거짓이 되면, for문 전체를 빠져나가게 된다.
초기화
반복문에 사용될 변수를 초기화하는 부분이며 처음에 한번만 수행된다.
둘 이상의 변수가 필요할 때는 콤마를 구분자로 변수를 초기화하면 된다.
단, 두 변수의 타입은 같아야 한다.
조건식
조건식이 참이면 반복을 계속하고, 거짓이면 반복을 중단하고 for문을 벗어난다.
for의 뜻이 '~하는 동안'이므로 조건식이 참인 동안 반복을 계속한다고 생각하기
증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시키는 것이다.
매 반복마다 변수의 값이 증감식에 의해서 점진적으로 변하다가 결국
조건식이 거짓이 되어 for문을 벗어나게 된다.
다음과 같이 다양한 연산자들로 증감식을 작성할 수도 있다.
for(int i =1; i<=10;i++) // 1부터 10까지 1씩 증가
for(int i =10; i>=1;i--) // 10부터 1까지 1씩 감소
for(int i =1; i<=10;i+=2) // 1부터 10까지 2씩 증가
for(int i =1; i<=10;i*=3) // 1부터 10까지 3배씩 증가
증강식도 쉼표를 이용해서 두 문장 이상을 하나로 연결해서 쓸 수 있다.
for(int i = 1, j = 10; i <=10 ; i++, j--) // i는 1부터 10까지 1씩 증가하고
// j는 10부터 1까지 1씩 감소한다.
지금까지 살펴본 이 세 가지 요소는 필요하지 않으면 생략할 수 있으며, 심지어 모두 포함하지 않는 것도 가능.
for( ; ; ) {...} // 모두 생략. 조건식은 참이 된다. >>>>무한반복
+ for문의 중첩도 가능.
>> 별찍기
2.2while문
while문은 if문처럼 조건식과 블럭{}만으로 이루어져 있다는 공통점이 있지만,
if문과 달리 while문은 조건식이 '참(true)'인 동안, 즉 조건식이 거짓이 될 때까지
블럭{}내의 문장을 반복한다.
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
}
while문은 조건식을 먼저 평가해서 조건식이 거짓이면
문장 전체를 벗어나고,
참이면 블럭{}내의 문장을 수행하고 다시 조건식으로 돌아간다.
조건식이 거직이 될 때까지 이 과정이 계속 반복.
for문과 while문의 비교
1부터 10까지의 정수를 순서대로 출력하는 for문을 while문으로 변경하면 아래와 같다.
//초기화, 조건식, 증감식
for(int i=1 ; i<=10 ; i++) {
System.out.println(i);
}
↓↓
↓↓
int i=1; //초기화
while(i<=10) { // 조건식
System.out.println(i);
i++; //증감식
}
위의 두 코드는 완전히 동일하다.
for문과 while문은 항상 서로 변환이 가능하다.
만약 초기화나 증감식이 필요하지 않은 경우라면, while문이 더 적합할 것이다.
while문의 조건식은 생략불가
while문은 for문과 달리 조건식을 생략할 수 없다.
그래서 while문의 조건식이 항상 참이 되도록 하려면 반드시 true를 넣어야 한다.
다음의 두 반복은 블럭{}내의 문장을 무한 반복한다.
for( ; ; ) { // 조건식이 항상 참
...
}
↓↓
↓↓
while(true) { // 조건식이 항상 참
...
}
참고 : 무한 반복문은 반드시 블럭{}안에 조건문을 넣어서 특정 조건을 만족하면 무한 반복문을 벗어나도록 해야 한다.
'JAVA' 카테고리의 다른 글
선택정렬, 삽입정렬구현 (0) | 2022.01.17 |
---|---|
Chapter 05 배열 (Array) - 220103~ (0) | 2022.01.13 |
java 수업복습(220106) - 연산자(Operator) (0) | 2022.01.10 |
Java 형변환(Casting)이란 (0) | 2022.01.07 |
java 수업 복습 (220105) - 연산자(Operator) (0) | 2022.01.05 |