hoon's bLog

Java 제어문의 조건문, 반복문 본문

IT/Java

Java 제어문의 조건문, 반복문

개발한기발자 2021. 1. 3. 23:48
반응형

안녕하세요.

이번 포스팅은 제어문에 대해서 알아보도록 하겠습니다.

 

제어문은 크게 조건문, 반복문으로 나뉩니다.

 

조건문 : 조건식과 문장으로 구성(주로 if, switch case문)

반복문 : 반복적인 작업 수행 시 사용(for, while, do-while)

 

먼저 조건문의 if문부터 알아보도록 하겠습니다.

if 문 : 조건식이 true 일 경우에만 실행문이 실행
- if(조건식) 다음에 한 문제일 경우 { } 를 생략할 수 있습니다.
- if문 만 사용 할 수도 있고, else if(조건식)을 추가하여 if문과 다른 조건을 추가할 수 있습니다.
- if조건도, else if조건도 아닌 조건은 else문을 타게 됩니다.
public class ControlStatement {
	public static void main(String[] args) {
		int a = 10;

		if(a == 10) { //a=10 이므로 이 조건 true!
			System.out.println("a는 10입니다.");  //해당 실행문 실행
		}else if(a > 10){
			System.out.println("a는 10보다 큰 수 입니다.");
		}else {
			System.out.println("a는 10보다 작은 수 입니다.");
		}
	}
}

실행결과

이렇게 조건문을 통해서, 해당 값의 조건이 true일 경우 원하는 실행문을 넣어주면 됩니다.

참고로, 실무에서도 if문은 정말 안 쓰이는 곳이 없는데, if문 안에 if문으로 중첩으로도 사용이 가능합니다.

단, 조건식이 많아지면 많아질 수록 실행 속도가 느려질 수 있다는 부분 유의해주시기 바랍니다!

 

다음은 삼항연산자입니다.(사실 연산자 파트에 넣었어야 했는데 if문과 함께 설명하기 위해 등장 ㅎㅎ)

조건식 ? 피연산자1 : 피연산자2
조건식의 연산 결과가 true 이면, 결과는 피연산자1,
조건식의 연산 결과가 false 이면 결과는 피연산자2

 

public class ControlStatement {
	public static void main(String[] args) {
		int a = 10;
		int b = 9;
		
		String rst = (a > b) ? "a가 큰 수 입니다." : "b가 큰 수 입니다.";
        //a > b 의 결과가 true 이므로 피연산자1 결과가 rst에 저장
		System.out.println(rst);
	}
}

실행결과

경우에 따라 삼항연산자를 사용하면 if문보다 간결해지는 경우도 있으니 상황에 맞게 잘 사용하시면 됩니다!

 

다음은 조건문의 마지막, switch 문입니다.

switch문 : 변수의 값에 따라 문장을 실행할 수 있도록 하는 제어문
switch문에서 사용하는 키워드로는 switch, case, default, break, continue 입니다.
public static void main(String[] args) {
		int value = 1;

	    switch(value){ //이 안에 원하는 변수 값이 들어가서 아래의 case가 판별!
	        case 1: //case가 각각의 변수 값의 종류를 분류, 현재 value=1이므로 해당 case문 호출
	            System.out.println("1");
	            break;
	        case 2:
	            System.out.println("2");
	            break;
	        case 3 :
	            System.out.println("3");
	            break;
           // 각 라인에 있는 break를 제거하면 value가 1일 경우 1일 출력되고,
           // switch문장을 빠져나가는 것이 아니라 1,2,3, 그외의 숫자가 연속해서 실행됩니다!!
	        default : //위의 case를 제외한 나머지의 경우, if문의 else와 동일한 효과이다!
	            System.out.println("그 외의 숫자");
	    }
	}

단, switch 문 사용 시 반드시 아래 부분을 기억해주시기 바랍니다!

- 조건식 결과(case 옆에)는 반드시 정수, 문자열만 가능

- case문의 값은 중복되어선 안됩니다!

 

추가로, continue문은 반복의 수행 중 조건문과 조건이 맞는 경우,

이후 블록 내부의 다른 수행문을 수행하지 않고 조건문을 빠져 나갑니다!


이렇게 if문과 삼항연산자, switch문의 조건문들을 알아보았습니다.

그럼 이제 반복문들에 대해서 알아볼까요?

 

먼저 while문입니다.

while문 : 조건문의 실행 결과가 true일 동안 반복해서 실행

 

그럼 1부터 10까지의 합을 구하는 예제로 while문을 알아보도록 하겠습니다.

public static void main(String[] args) {
		int total = 0;  //총합이 들어갈 변수
		int i = 1;      //1부터 더해질 변수
		while(i <= 10) { //괄호안에 조건이 참이 될 때 까지 아래의 실행문 반복
			total = total + i;
			i++; //total 연산이 끝난후 i를 증가시킨다.
		}
		//i=11이 되는 순간 while문을 빠져나온다.
		System.out.println("결과값 : " + total);
	}

출력결과

 

아주 간단하죠?

while문 같은 경우 조건식이 성립하지 않으면 하나도 실행되지 않을 수 있음을 명심하시고,

조건식을 잘 만들어주시기 바랍니다!

 

다음은 do-while문입니다.

do while문 : 무조건 한 번은 실행되는 반복문

 

역시 위와 같은 예제를 do-while로 만들어서 알아보겠습니다.

public static void main(String[] args) {
		int i = 1;
		do {
			System.out.println("do-while 테스트중, i = " + i); //반복이 될 실행문
		}while(i > 10); //블록안에 실행문이 실행될 조건
}

실행결과

위에 코드에서 i=1이므로 while(i > 0)이 성립하지 않는다!(false)

만약 while문이였다면 실행되지 않았겠지만,

do-while문은 최초 한 번은 무조건 실행을 하고 조건이 맞지 않음을 판별하고 실행을 멈춥니다.

조건식을 적절히 바꾸고, 블록 안에 증감식(i++;)을 넣어주면 정상적으로 반복문을 수행할 거예요!

 

다음은 감히 반복문의 꽃이라고 말할 수 있는, for문입니다.

for문 : 변수 초기화, 조건식, 증감식이 한 줄에 모두 있고, 초기화식은 최초 한 번만 수행

public static void main(String[] args) {
        int total = 0;
        for(int i = 1; i <= 10; i++){
            total = total + i;
        }
        System.out.println("결과값 : " + total);
}

실행결과


이렇게 for문을 끝으로 반복문 까지 알아보았습니다.

너무나 쉽고 기초적인 개념이지만, 실무에서 비즈니스 로직 부분에서 가장 많이 쓰이는 게 제어문이고,

활용도에 따라 정말 깔끔한 코딩이 될 수도 있고, 조건 개미지옥에 빠질 정도로 더러워질 수 있는 것이

제어문이라고 생각합니다.

 

아직은 저도 뉴비 개발자이기에 계속해서 공부하고, 삽질도 많이 하고 있지만,

이러한 시간들을 이겨낸다면 현직에 종사하시는 고수님들의 반열에 오를 수 있겠....죠?ㅎㅎㅎ

그때까지 이 인고의 시간을 모두 같이 이겨내 봅시다!

 

오늘도 글 읽어주시느라 고생하셨습니다.

늘 그렇듯 개선점, 객관적인 태클은 언제나 대환영입니다!!

 

출처 : 자바의 정석 3rd Edition 내용 정리

728x90
반응형