JaeWon's Devlog
article thumbnail
반응형

- 해당 내용은 백기선 님의 자바 온라인 스터디 공부 및 제출 목적

   -> https://github.com/whiteship/live-study/issues/4

 

4주차 과제: 제어문 · Issue #4 · whiteship/live-study

목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 (필수) 선택문 반복문 과제 (옵션) 과제 0. JUnit 5 학습하세요. 인텔리J, 이클립스, VS Code에서 JUnit 5로 테스트 코드 작성하는 방법에 익숙해

github.com


목표

  • 자바가 제공하는 제어문을 학습하세요.

학습할 것 (필수)

  • 선택문
  • 반복문

* 제어문

- 기본적으로 코드는 위에서 아래 순으로 읽으며 실행하게 된다. 모든 작업을 순차적으로 실행할 수 있다면 상관이 없겠지만, 어떠한 코드는 반복이 필요할 수 있고, 어떠한 코드는 다시 맨 처음부터 실행해야 할 수도 있는 경우가 존재한다.
- 이와같은 상황을 제어문을 사용하여 코드 실행 흐름을 제어할 수 있다.
- 제어문의 종류로는 선택문(if, if-else, switch-case), 반복문(for, while, do-while), 분기문(break, continue, return) 이 있다

1. 선택문

  • 조건식의 결과에 의해 실행 될 코드를 선택할 수 있는 구문.

1-1. if 문

- 가장 기본적인 제어문으로 조건이 충족할 시 지정한 블록({})의 코드를 실행

int a = 1;
int b = 3;
int c = 1;

// 결과 : 서로 같은 수 입니다
if(a == c){
	System.out.println("서로 같은 수 입니다.");
}

// 결과 : X
if(a == b){
	System.out.println("서로 같은 수 입니다.");
}

1-2. if-else 문

- 조건이 충족할 시 실행한 코드와 충족하지 못한 경우에 대한 코드도 실행

int a = 1;
int b = 3;

// 결과 : 서로 다른 수 입니다
if(a == b){
	System.out.println("서로 같은 수 입니다.");
} else {
	System.out.println("서로 다른 수 입니다.");
}

1-3. if-else if-else 문

- 여러가지 조건을 사용할 경우에 사용(ex: 학점)

- 각 조건이 충족할 시 지정한 블록({})을 실행

int a = 3;

// 결과 : a는 3입니다.
if(a < 3){
	System.out.println("a는 3보다 작은 수 입니다.");
}else if(a > 3){
	System.out.println("a는 3보다 큰 수 입니다.");
}else if(a == 3){
	System.out.println("a는 3입니다.");
}else{
	System.out.println("a는 숫자가 아닙니다.");
}

1-4. switch 문

- 변수에 대해 조건을 확인하고, 조건에 따라 분기하여 코드 실행

- 기본적인 

int a = 2;

// 결과: a는 2입니다.
switch(a){
    case 1:
    	System.out.println("a는 1입니다.");
    	break;
    case 2:
    	System.out.println("a는 2입니다.");
        break;
    case 3:
    	System.out.println("a는 3입니다.");
        break;
    case 4:
    	System.out.println("a는 4입니다.:");
        break;
    default:
    	System.out.println("a는 1,2,3,4가 아닙니다.");
        break;
}

- switch문은 if-elseif-else문으로도 변경이 가능하다.

int a = 2;

if(a==1){
	System.out.println("a는 1입니다.");
}else if(a==2){
	System.out.println("a는 2입니다.");
}else if(a==3){
	System.out.println("a는 3입니다.");
}else if(a==4){
	System.out.println("a는 4입니다.");
}else{
	System.out.println("a는 1,2,3,4가 아닙니다.");
}

1-5. break 문

- 제어문에서 코드를 실행 후 다음 제어문 코드(반복, case)를 실행하지 않고, 다음 코드를 실행

int a = 2;

// 결과: a는 2입니다.
//      a는 3입니다.
swtich(a){
	case: 1
    	System.out.println("a는 1입니다.");
        break;
    case: 2
    	System.out.println("a는 2입니다.");
    case: 3
    	System.out.println("a는 3입니다.");
        break;
    default:
    	System.out.println("a는 1,2,3이 아닙니다.");
        break;
}

- 위의 예제에서 a는 2이므로 case: 2 블록의 코드를 실행하지만, break가 없기때문에 계속 switch문을 실행하게 되면서, case: 3 블록의 코드도 실행하게 된다.

- case: 3에서는 break가 있기때문에, 더 이상 실행하지 않고 switch 문을 종료한다.

2. 반복문

- 조건이 참이 될 때까지 블록의 코드를 반복적으로 실행

- 루프를 사용하면 코드를 여러 번 또는 조건이 만족할 때까지 반복적으로 실행할 수 있다

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

2-1. for 문

- 개발자가 설정한 조건이 만족 할때까지 블록의 코드를 계속해서 실행

- for(초기식; 조건식; 증감식) { 반복할 코드 }

int a = 3;
int i = 1;

// 결과: 1,2
for(i ; i < a; i++){
	System.out.println(i);
    	i++;
}

- i=1, a=3 이므로 i<a 를 만족하기때문에 for 문의 코드를 실행한다 -> 출력 : 1

- i=2, a=3 이므로 i<a 를 만족하기때문에 for 문의 코드를 실행한다 -> 출력 : 2

- i=3, a=3 이므로 i<a 를 만족하지 않기 때문에 for 문의 코드를 실행하지 않는다.

2-2. 향상된 for 문

- JDK 5.0 부터 배열 혹은 컬렉션을 순회시에 조금 더 향상된 for 문을 사용

- for(타입 변수명 : 배열/컬렉션) { 반복할 코드 }

int number = 60;
int[] numArr = {10,20,30,40,50,60,70,80,90,100};

for (int num : numArr){     
    if(number == num){
    	System.out.println("num는 60입니다.");
    	break;
    }
}

- numArr의 배열을 순회하며 각 배열의 값을 num의 변수로 사용

- num이 60이면 for 문 반복을 종료(break)

2-3. while 문

- 특정 조건이 참인 경우에 블록의 코드를 계속해서 수행

- while(조건식) { 조건식이 true(참)일 경우 반복할 코드 }

- 조건식이 항상 참일 경우에는 무한하게 while 문의 코드가 실행되면서, 다른 코드를 수행 할 수 없게 될 수 있다.

int a = 1;
int b = 3;

// 결과: 1, 2
while(a<b){
    System.out.println(a);
    a++;
}

- a=1, b=3 이므로 a<b 를 만족하기때문에 while 문의 코드를 실행한다 -> 출력 : 1

- a=2, b=3 이므로 a<b 를 만족하기때문에 while 문의 코드를 실행한다 -> 출력 : 2

- a=3, b=3 이므로 a<b 를 만족하지 않기 때문에 while 문의 코드를 실행하지 않는다.

int a = 1;

// 결과: 1,2,3 ... 무한반복
while(true){
    System.out.println(a);
    a++;
}

- 조건이 항상 true이기 때문에 계속해서 while문의 코드를 실행하게 된다. -> 출력: 1, 2, 3 ....

- 항상 true인 경우에도 break문을 통해 무한히 반복하는것을 막을 수 있다.

int a = 1;

// 결과: 1,2,3
while(true){
    System.out.println(a);
    a++;
    if(a == 3){
    	break;
    }
}

- a가 3이 되면 break를 통해서 while문을 종료한다.


참고

- https://github.com/jongnan/java-study-with-whiteship/blob/master/week4/week4.md

- https://lob-dev.tistory.com/entry/Live-StudyWeek-04-%EC%A0%9C%EC%96%B4%EB%AC%B8-%EA%B3%BC%EC%A0%9C

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!