📖/자바의 정석(~ing)

[자바의 정석] Chapter04 조건문과 반복문

모팔구 2023. 3. 27. 11:24
728x90
반응형

⚠️ 유튜브 정리

1. 조건문 - if, switch

  • 조건문: 조건을 만족할 때만 {}(블록)을 수행(0~1번)
    if (score > 60) {
    	System.out.println("합격입니다.");
        System.out.println("축하드립니다.");
    }
  • 반복문: 조건을 만족하는 동안 {}을 수행(0~n번)
    int i = 10;
    while (i-- >0 ) {
    	System.out.println(i);
    }
    이 둘을 합쳐 제어문이라고 한다.

 

1.1 if문

  • 조건식이 참(true)일 때, {}안의 문장을 수행한다.조건식에는 true이거나 false인 문장을 사용해야한다.
  • if (조건식) { // 조건식이 참(true)일 때 수행될 문장들을 적는다. }
  • 블럭{}: 여러 문장을 하나로 묶어주는 것
  • if (조건식) { // 블럭 시작 System.out.println(); // 들여쓰기 해주는 것이 읽기 좋음 } // 블럭 끝 if (조건식) System.out.println(); // 제어문 내 문장이 하나일 경우 블럭 생략 가능 System.out.println("etc"); // 제어문에 포함X
  • if-else문: 둘 중 하나 - 조건식이 참일 때와 거짓일 때로 나눠서 처리
  if (조건식) {
  	// 조건식이 참(true)일 때 수행될 문장들을 적는다.
  } else {
  	// 조건식이 거짓(false)일 때 수행될 문장들을 적는다.
  }
  
  
  
  if (input == 0) {
  	System.out.println("0입니다.");
  }
  if (input != 0) {
  	System.out.println("0이 아닙니다.);
  }
  
  ⬇️
  
  if (input == 0) {
  	System.out.println("0입니다.");
  } else {
  	System.out.println("0이 아닙니다.");
  }

 

  • if-else if문: 여러 개 중 하나 - 여러 개의 조건식을 포함한 조건식
    if (조건식) {
    		// 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else if (조건식2) {
    		// 조건식2의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else if (조건식3) {
    		// 조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else { // 마지막은 보통 else블럭으로 끝나며, else블럭은 생략가능하다.
    		// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
    }

 

  • 중첩 if문: if문 안의 if
    if (조건식1) {
    		// 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
    	if(조건식2) {
      	// 조건식1과 조건식2가 모두 true일 때 수행될 문장들
      } else {
      	// 조건식1이 참이고, 조건식2가 거짓일 때 수행될 문장들
      }
    } else { 
    		// 조건식1이 거짓일 때 수행될 문장들
    }

 

1.2 switch문

  • switch: 처리해야 하는 경우의 수가 많을 때 유용한 조건문
switch(조건식) {
	case 값1:
	// 조건식의 결과가 값1과 같을 경우 수행될 문장들
	...
	break; // switch문을 벗어난다.
	case 값2:
	// 조건식의 결과가 값2과 같을 경우 수행될 문장들
	...
	break;
	default: // 생략 가능
	// 조건식의 결과가 일치하는 case문이 없을 때 수행될 문장들
	...
}
  • switch문의 흐름
    1. 조건식을 계산한다.
    2. 조건식의 결과와 일치하는 case문으로 이동한다.
    3. 이후의 문장들을 수행한다.
    4. break문이나 switch문의 끝을 만나면 switch눙 전체를 빠져나간다.
  • switch문의 제약조건
    1. switch문의 조건식 결과는 정수 또는 문자열(jdk 1.7이상)이어야 한다.
    2. case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. 즉, 변수, 실수는 불가능
  • 임의의 정수(난수) 만들기 
    • Math.random(): 0.0과 1.0사이의 임의의 double값을 반환1~3 범위의 임의의 정수를 만들려면
      0.0 <= Math.random() < 1.0
      0.0 * 3 <= Math.random() * 3 < 1.0 * 3
      0.0 + 1 <= Math.random() + 1 < 3.0 * 1
      (int)1.0 <= (int)Math.random() < (int)4.0
      1 <= Math.random() < 4

 

2. 반복문

2.1 for문

  • for: 조건을 만족하는 동안 {}을 반복 - 반복횟수를 알 때 적합
for (초기화; 조건식; 증감식) {
	수행될 문장
}

// 예시
for (int i = 0; i < 3 ; i++) {
	System.out.println("Hello");
}

// 모든 식을 생략하면 true로 간주되어 무한반복문이 됨
for (;;) {
	System.out.println("Hello");
}
  • 중첩 for문: for문 내에 또 다른 for문을 포함시킬 수 있다.
// 예시: 구구단
for (int i = 2; i <= 9; i++) {
	for (int j = 1; j <= 9; j++) {
    	System.out.println(i + " * " + j + " = " + i * j);
    }
    System.out.println();
}

 

2.2 while

  • while: 조건을 만족시키는 동안 {}을 반복 - 반복횟수 모를 때
while(조건식) {
	// 조건식의 연산결과가 참인 동안 반복될 문장
}

for (int i = 0; i <= 10; i++) {
	System.out.println(i);
}

int i = 0;
while (i <= 10) {
	System.out.println(i);
    i++;
}
  • while의 무한반복문
while(true) {
	 // 계속 실행
}
  • do-while: {}을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용
do {
	// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다.(처음 한 번은 무조건 실행)
} while(조건식);

 

 

2.3 break, contiue

  • break: 자신이 포함된 하나의 반복문을 벗어난다.
while(true) {
	if(조건식) {
    	break; // 무한반복하다가 조건식이 참이 되면 반복문을 벗어남.
    }
}
  • continue: 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감.
    전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용
for (int i = 0; i <= 10; i++) {
	if (i % 3 == 0) {
    	continue;
    }
    system.out.print(i + " ");
}
// 결과: 1 2 4 5 7 8 10
  • 이름 붙은 반복문: 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
Loop: for (int i = 0; i <= 10; i++) {
	for (int j = 0; j <= 2; j++) {
    	// 반복되는 문장
        break Loop; // 바깥 for문이 멈춤
        breka; // 안쪽 for문이 멈춤
        continue Loop; // continue문에도 사용 가능
    }
}

 

 

728x90
반응형