Backend/Java

[Java] 선택문, 반복문

가은파파 2021. 1. 18. 00:03

#선택문

if-then & if-then-else

가장 기본적인 선택문이다. 오직 특정 if조건이 true일때만 해당 if 블럭이 실행된다.

void applyBrakes(){
	//the "if" clause: bicycle must be moving
    if(isMoving)
    	//the "then" clause: decrease current speed
        currentSpeed--;
    }
}

void applyBrakes(){
	//the "if" clause: bicycle must be moving
    if(isMoving)
    	//the "then" clause: decrease current speed
        currentSpeed--;
    } else{
    	System.err.println("The bicycle has already stopped!");
    }
}

switch문

class SwitchDemo2 {
    public static void main(String[] args) {

        int month = 2;
        int year = 2000;
        int numDays = 0;

        switch (month) {
            case 1: case 3: case 5:
            case 7: case 8: case 10:
            case 12:
                numDays = 31;
                break;
            case 4: case 6:
            case 9: case 11:
                numDays = 30;
                break;
            case 2:
                if (((year % 4 == 0) && 
                     !(year % 100 == 0))
                     || (year % 400 == 0))
                    numDays = 29;
                else
                    numDays = 28;
                break;
            default:
                System.out.println("Invalid month.");
                break;
        }
        System.out.println("Number of Days = "
                           + numDays);
    }
}

자바에서는 switch문의 branch가 많아질 수록 아래와 같은 방법을 권장한다.

 

출처 : refactoring.guru/replace-conditional-with-polymorphism

 

 

#반복문

while & do-while

while문법은 특정 조건이 true인 경우 반복적으로 실행된다.

do-while도 특정 조건이 true인 경우 반복되지만 실행되는 문장이 do블럭에서 실행된다.

int count = 1;
//while문
while(count < 11){
	System.out.println("Count is: " + count);
    count++;
}

//do-while문
do {
	System.out.println("Count is: " + count);
    count++;
} while (count < 11);

 

for문

for문은 다양한 값에 대해 반복작업을 할 수 있는 문법이다.

for(initialization; termination; increment){
	statements(s);
}

for(int i=1; i<11; i++){
	System.out.println("Count is: " +i);
}

initialization : 루프가 돌때, 시작하며 한번 실행된다.

termination : 조건을 표시하며 false가 될때 terminate된다.

increment : 증분식은 루프를 통해 반복될 때마다 호출된다. 증가 or 감소시킨다.

 

for문의 Collections과 arrays에 사용할 수 있는 또다른 폼이 있다.

class EnhancedForDemo {
	public static void main(String[] args){
    	int[] numbers = {1,2,3,4,5,6,7,8,9,10};
        for(int item : numbers){
        	System.out.println("Count is: "+item);
        }
    }
}

반복문을 통해 변수 item의 현재값을 보여준다.

위의 form의 for문을 사용하는 것을 추천한다.

 

break : 조건문,반복문에서 특정 조건에서 진행을 break할 수 있는 문법

continue : 특정 케이스에서는 작업을 skipt한다.

return : 조건문,반복문에서 특정 조건에서 변수를 return할 수 있는 문법

 

 

#재귀함수 사용시 주의사항

자바는 recursion 사용시에 꼬리재귀 최적화가 안된다.

공간복잡도는 Stack까지 고려해야 한다.

시간 복잡도 O(N)

공간 복잡도 O(N)

 

괜찮은 알고리즘 기준은 O(N) logN, O(N)까지 괜찮다. 그러나 O(N^2)부터 고민해봐야 한다.

 

'Backend > Java' 카테고리의 다른 글

Enum 자바의 열거형  (0) 2021.01.29
[Java] 클래스  (0) 2021.01.20
Java 예외 처리 정리  (0) 2021.01.16
Junit5 문법 / 예제 / 활용 방법  (0) 2021.01.16
연산자 (3주차)  (0) 2021.01.12