코딩공부/자바

자바의 정석(5) - 자바의 세 번째 이야기, 조건문과 반복문

에반셀린 2023. 2. 6. 21:44

*이 글은 개인적인 공부/기록 목적으로 올립니다.

부족하다고 느껴질 수 있는 글이니 양해 부탁드립니다.*

 

참고도서

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석 - YES24

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

www.yes24.com


 조건문이란

 조건문이란 조건식의 결과에 따라서 수행될 문장이 달라지는 문장을 뜻한다.

조건문은 조건식과 실행될 하나의 문장 또는 블록으로 구성되어 있으며 JAVA에서 조건문은 if문과 switch문이 있다.

if문은 우리가 흔히 일상에서 많이 보는 것과 같이 '만약에' 라는 조건식을 주어 결과값을 달라지게 할 수 있으며

switch문은 if문에 비해 제약조건이 있기 때문에 자바로 개발하는 개발자는 주로 if문을 쓴다.

경우의 수에 따라 switch문을 쓰는 경우도 있으니 두 가지 모두 잘 쓸 줄 알아야 한다.


if문

 if문은 크게 세가지 형태가 존재하는데 if, if-else, if-else if로 존재한다. 각 형태마다 쓰이는 구조가 다르며

조건식의 연산결과에 따라 실행될 문장 또는 블록이 달라진다. 또한 if문의 조건식을 최종 연산 결과가 반드시

boolean타입의 값, 즉 true 또는 false이여야 한다. 

 

 간단하게 if문만 있는 경우에는 조건식의 결과가 true이면 블록 내의 문장이 실행되고

false이면 if문을 벗어나 다음 문장을 실행하게 된다.

if (조건식) {
	// 조건식의 결과가 true일 때 실행되는 구현부
}

int score = 60;
if (score > 50) {
	System.out.println("합격입니다.");


// 화면 출력
합격입니다.

 실제 코드를 보면 score라는 int형 변수가 있을 때 score의 값이 50보다 크면 조건식의 결과가 true가 되어

if문 블록 안에 있는 문장이 실행된다. 그러면 "합격입니다."라고 화면에 출력된다.


 if - else문

 if - else문은 조건식의 결과가 true일 때 블록 내의 문장이 실행되고

조건식의 결과가 false일 때 else의 블록이 실행된다.

if (조건식) {
	// 조건식의 결과가 true일 때 수행될 구현부
} else {
	// 조건식의 결과가 false일 때 수행될 구현부
}

int score = 50;
if (score >= 60) {
	System.out.println("합격입니다.");
} else {
	System.out.println("불합격입니다.");
}

// 화면 출력
불합격입니다.

 실제 코드를 보면 score라는 int형 변수가 있을 때 score의 값이 60보다 크면 조건식의 결과가 true가 되어

if문 블록 안에 있는 문장이 실행된다는 것을 if문에서 알게 되었다. 하지만 score의 값이 50이기 때문에

if문의 조건식에 false가 되어 else의 블록이 실행된다. 그러면 "불합격입니다."라고 화면에 출력된다.


 if - else if문

 if -else if문은 둘 이상의 조건식을 사용할 수 있는데 이때 조건식의 갯수는 제한이 없다.

if (조건식1) {
	// 조건식의 결과가 true일 때 수행될 구현부
} else if (조건식2) {
	// 조건식2의 결과가 true일 때 수행될 구현부
} else {
	// 모든 조건식의 결과가 false일 때 수행될 구현부
}

// 학점 계산기
int score = 80;
if (score >= 90) {
	System.out.println("A");
} else if (score >= 80 && score < 90) {
	System.out.println("B");
} else if (score >= 70 && score < 80) {
	System.out.println("C");
} else if (score >= 60 && score < 70) {
	System.out.println("D");
} else {
	System.out.println("F");
}

// 화면 출력
B

실제 코드를 보면 score라는 int형 변수가 있을 때 조건문의 조건식에 따라 "B"라고 화면에 출력된다.


 중첩 if문

 중첩 if문은 if문 안에 또 다른 if문을 넣을 수 있는 것을 말한다. if문의 중첩 횟수는 제한이 없으며

바깥의 if문의 조건식이 true일 때 안쪽의 if문이 실행이 된다.

int score = 95;
if (score >= 70) {
	System.out.println("합격입니다.");
    if (score >= 90) {
    	System.out.println("우등생으로 등록하였습니다.");
    }
} else {
	System.out.println("불합격입니다.");
}

// 화면출력
합격입니다.
우등생으로 등록하였습니다.

 실제 코드를 보면 score라는 int형 변수가 있을 때 바깥의 조건식이 true이기 때문에 "합격입니다."라고

화면에 먼저 출력이 되고 이후에 안쪽의 if문이 실행되게 되는데 조건식이 true이기 때문에

"우등생으로 등록하였습니다."라고 화면에 출력이 된다.


switch

 switch문은 if문처럼 조건식이 존재하지만 결과에 따라서 수행되는 코드를 다르게 할 수 있다.

약간 if - else if문과 비슷할 수도 있는데 다른 점은 조건식의 결과값에 따라 다양한 문장들을

수행할 수 있다는 것이다.

switch (조건식) {
	case 값1:
        // 조건식의 결과가 값1과 같을 경우 수행될 구현부
        break;
        
    case 값2:
        // 조건식의 결과가 값2과 같을 경우 수행될 구현부
        break;
        
    case 값3:
        // 조건식의 결과가 값3과 같을 경우 수행될 구현부
        break;
        
    default:
    	// 조건식의 결과가 일치하는 case문이 없을 때 수행될 구현부
}

int num = 2;
switch (num) {
	case 1:
       System.out.println("1번을 선택하셨습니다.");
        break;
        
    case 2:
       System.out.println("2번을 선택하셨습니다.");
        break;
        
    case 3:
        System.out.println("3번을 선택하셨습니다.");
        break;
        
    default:
    	System.out.println("해당 번호가 없습니다.");
        break;
}

// 화면출력
2번을 선택하셨습니다.

 실제 코드를 보면 num이라는 int형 변수가 있을 때 switch문 조건식에 해당되는 case문에 찾아가게 되는데

case 2에 해당되기 때문에 "2번을 선택하셨습니다."라고 화면에 출력된다.


 반복문이란

 반복문이란 이름 그대로 문장 또는 문장들을 반복하는 것을 뜻한다.

반복문도 마찬가지로 조건식과 실행될 블록으로 구성되어 있으며 JAVA에서 반복문은

for문, while문, do - while문이 있다.

 

 for문은 보통 반봇횟수가 중요한 경우에 많이 쓰이고 그 외에는 while문을 많이 쓰인다.

상황에 맞게 쓰면 되는데 do - while문은 while문의 변형으로 블록 또는 문장이 최소한 한번은 먼저 수행되고

이후에 while문이 실행되는 것을 말한다.


for문

 for문은 조건식안에 다양한 식을 집어 넣을 수 있다. 초기화, 조건식, 증감식을 넣을 수 있는데

for문이 실행되면 먼저 초기화가 수행되고 조건식을 계산하고 결과가 true일 때 블록의 문장이 수행되고

false이면 for문을 벗어나게 된다. 그 다음에 증감식을 수행하고 다시 for문으로 돌아가 조건식이 false가 될 때까지

계속해서 반복하게 된다.

for (초기화; 조건식; 증감식) {
	// 조건식이 true일 때 수행될 구현부
}

int sum = 0;
for (int i = 1; i <= 10; i++) {
	sum += i;  // sum = sum + i;
}
System.out.println("10까지의 합 : " + sum);

// 화면 출력
10까지의 합 : 55

 실제 코드를 보면 sum이라는 int형 변수가 있을 때 for문이 실행될 때 i가 10보다 작거나 같을 때까지 계속해서 수행된다.

그리고 한번 실행될 때마다 변수 sum에 i의 값이 더하게 되고 이후 i는 증감해서 1부터 10까지 계속 올라간다.

그래서 화면출력에는 1부터 10까지 더했을 때 합인 55가 나오게 된다.


중첩 for문

 중첩 for문은 앞의 if문처럼 중첩이 가능한 반복문이고 반복횟수는 제한이 없다. 보통 중첩 for문을 연습할 때

구구단 구현하기를 예를 들 수 있는데 생각보다 간다한게 구현할 수 있다.

for (int i = 2; i <= 9; i++) {
	for (int j = 1; j <= 9; j++) {
    	System.out.println(i + " X " + j + " = " + i * j);
    }

// 화면 출력
2 X 1 = 2
2 X 2= 4
2 X 3 =6
...
...
9 X 9 = 81

바깥의 for문이 수행될 때 값이 true이면 안쪽의 for문이 수행되고 안쪽의 for문이 다 반복됐을 때

바깥의 for문이 증감하여 바깥의 for문이 끝날 때까지 계속해서 반복하게 된다.

그 값으로 구구단을 구현할 수 있다.


while

 while문은 조건식이 참인 동안 계속 반복하는 반복문이다. 그 말은 false이면 반복문에서 나오게 된다.

while (조건식) {
	// 조건식의 연산결과가 true일 때 수행될 구현부
}

int i = 10;
while (i >= 10) {
	System.out.println(i--);
}

// 화면 출력
10
9
8
7
6
5
4
3
2
1
0

do - while

 do - while문은 while문의 변형으로 do문의 블록 안에 먼저 수행한 다음 while문의 조건식을 수행한다.

블록이 최소한 1번 이상 수행될 것을 보장한다.

do {
	// 조건식의 연산 결과가 true일 때 수행될 구현부
} while (조건식);

int i = 0;

System.out.println("문장을 입력하세요.");
do {
	input = System.in.read();
    System.out.print((char) input);
} while (input != -1 && input != 'x');
}

break문, continue문

 break문은 자신이 포함된 하나의 반복문 또는 switch문을 빠져 나오는데 주로 if문과 함께 사용해서

특정 조건을 만족하면 반복문을 벗어나게 한다.

 

 continue문은 자신이 포함된 반복문의 끝으로 이동하는데 continue문 이후의 문장들은 수행되지 않는다.


 오늘까지 자바의 조건문과 반복문을 공부하면서 정리해보았는데 앞으로 해야되는 공부도 많지만 개발자로서

가장 중요한 것은 탄탄한 기본기가 앞으로 개발하는 데 큰 도움이 될거라 생각하기에 더욱 더 정진하도록 하겠다!