JAVA/Theory

μžλ°”(Java)의 μ œμ–΄λ¬Έ

ITs Min 2023. 12. 18.

πŸ” μ œμ–΄λ¬Έμ΄λž€?

μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ œμ–΄λ¬Έμ€ ν”„λ‘œκ·Έλž¨μ˜ 흐름을 μ œμ–΄ν•˜λŠ” 핡심적인 μš”μ†Œμ΄λ‹€. μ œμ–΄λ¬Έμ„ 톡해 쑰건에 따라 μ½”λ“œ 블둝을 μ‹€ν–‰ν•˜κ±°λ‚˜ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€. μ œμ–΄λ¬Έμ„ μ‚¬μš©ν•˜λŠ” 것은 ν”„λ‘œκ·Έλž¨μ˜ 흐름을 μœ μ—°ν•˜κ²Œ μ œμ–΄ν•˜κ³  λ‹€μ–‘ν•œ 상황에 λŒ€μ‘ν•˜λŠ” 데에 맀우 μœ μš©ν•˜λ‹€.

  1. 쑰건에 λ”°λ₯Έ λΆ„κΈ° 처리:
    • μ’…λ₯˜λ³„ 처리: if-else문을 μ‚¬μš©ν•˜μ—¬ 쑰건에 따라 λ‹€λ₯Έ μ½”λ“œ 블둝을 μ‹€ν–‰ν•¨μœΌλ‘œμ¨ νŠΉμ • 쑰건에 맞게 λ‹€μ–‘ν•œ λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.
  2. 반볡 μž‘μ—… κ°„νŽΈν™”:
    • 일정 횟수만큼 반볡: forλ¬Έμ΄λ‚˜ while문을 μ΄μš©ν•˜μ—¬ 일정 횟수만큼 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.
    • 쑰건에 따라 반볡: do-while문을 μ‚¬μš©ν•˜μ—¬ μ΅œμ†Œ ν•œ λ²ˆμ€ 반볡 μ‹€ν–‰ν•˜κ³ , κ·Έ 후에 쑰건을 κ²€μ‚¬ν•˜μ—¬ ν•„μš”ν•œ 만큼 λ°˜λ³΅ν•  수 μžˆλ‹€.
  3. λ‹€μ–‘ν•œ 경우의 수 처리:
    • 닀쀑 쑰건 처리: switch문을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ κ°€μ§€ κ²½μš°μ— 따라 λ‹€λ₯Έ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€.
  4. μ½”λ“œ 가독성 ν–₯상:
    • μ˜λ„ λͺ…ν™•ν™”: μ μ ˆν•œ μ œμ–΄λ¬Έμ˜ μ‚¬μš©μ€ μ½”λ“œμ˜ μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ 전달할 수 μžˆλ„λ‘ 도와쀀닀.
    • ꡬ쑰화: 쑰건문과 λ°˜λ³΅λ¬Έμ„ 적절히 ν™œμš©ν•˜μ—¬ μ½”λ“œλ₯Ό κ΅¬μ‘°ν™”ν•¨μœΌλ‘œμ¨ 가독성을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.
  5. 효율적인 μž‘μ—… μˆ˜ν–‰:
    • λ³΅μž‘ν•œ μž‘μ—… λ‹¨μˆœν™”: μ œμ–΄λ¬Έμ„ 적절히 ν™œμš©ν•˜λ©΄ λ³΅μž‘ν•œ μž‘μ—…μ„ λ…Όλ¦¬μ μœΌλ‘œ λ‹¨μˆœν™”ν•  수 μžˆλ‹€.
    • μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ: 쑰건문과 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ λΉ„μŠ·ν•œ λ‘œμ§μ„ μ—¬λŸ¬ κ³³μ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.

πŸ” 쑰건문

If문

 if문은 쑰건에 따라 νŠΉμ •ν•œ μ½”λ“œ 블둝을 μ‹€ν–‰ν•˜λ„λ‘ ν•˜λŠ” μ œμ–΄λ¬Έ 쀑 ν•˜λ‚˜μ΄λ‹€. 쑰건식이 참일 경우 ν•΄λ‹Ή μ½”λ“œ 블둝이 μ‹€ν–‰λ˜λ©°, 쑰건식이 거짓일 경우 else 블둝이 μ‹€ν–‰λœλ‹€.

[κΈ°λ³Έν˜•μ‹]

if (쑰건식) {
    // 쑰건식이 참일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
} else {
    // 쑰건식이 거짓일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
}
  • 쑰건식 (if λ‹€μŒμ˜ κ΄„ν˜Έ μ•ˆμ— μœ„μΉ˜): ν‰κ°€λ˜μ–΄ μ°Έ λ˜λŠ” κ±°μ§“μœΌλ‘œ νŒλ‹¨λ˜λŠ” ν‘œν˜„μ‹μ΄λ‹€. λ³€μˆ˜μ˜ 값이 νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” λ“± λ‹€μ–‘ν•œ 쑰건을 ν‘œν˜„ν•  수 μžˆλ‹€.
  • 참일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ (if λ‹€μŒ μ€‘κ΄„ν˜Έ λ‚΄λΆ€): 쑰건식이 참일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝이닀. 단일 λ¬Έμž₯μ΄λ‚˜ μ—¬λŸ¬ λ¬Έμž₯으둜 ꡬ성될 수 μžˆλ‹€.
  • 거짓일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ (else λ‹€μŒ μ€‘κ΄„ν˜Έ λ‚΄λΆ€): else ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 쑰건식이 거짓일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝을 μ§€μ •ν•  수 μžˆλ‹€. else 블둝은 μƒλž΅ κ°€λŠ₯ν•˜λ‹€.

[ν™œμš©μ˜ˆμ‹œ]

int age = 20;

if (age >= 18) {
    System.out.println("μ„±μΈμž…λ‹ˆλ‹€.");
} else {
    System.out.println("λ―Έμ„±λ…„μžμž…λ‹ˆλ‹€.");
}

Swtich문

switch문은 μ—¬λŸ¬ κ°€μ§€ κ²½μš°μ— 따라 λ‹€λ₯Έ λ™μž‘μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν•˜λŠ” μ œμ–΄λ¬Έμ΄λ‹€. λ³€μˆ˜μ˜ 값에 따라 λ‹€μ–‘ν•œ λΆ„κΈ° 처리λ₯Ό ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λœλ‹€. switch문은 νŠΉμ • λ³€μˆ˜μ˜ 값을 μ—¬λŸ¬ 경우(case)와 λΉ„κ΅ν•˜λ©°, μΌμΉ˜ν•˜λŠ” 경우 ν•΄λ‹Ή case의 μ½”λ“œ 블둝이 μ‹€ν–‰λœλ‹€.

[κΈ°λ³Έν˜•μ‹]

switch (λ³€μˆ˜) {
    case κ°’1:
        // λ³€μˆ˜κ°€ κ°’1일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
        break;
    case κ°’2:
        // λ³€μˆ˜κ°€ κ°’2일 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
        break;
    // ... 좔가적인 caseλ“€
    default:
        // μœ„μ˜ μ–΄λ–€ case에도 ν•΄λ‹Ήν•˜μ§€ μ•Šμ„ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
}
  • switch λ‹€μŒμ˜ κ΄„ν˜Έ μ•ˆμ— μœ„μΉ˜ν•œ λ³€μˆ˜: μ—¬λŸ¬ 경우 μ€‘μ—μ„œ μ–΄λ–€ κ²½μš°μ— ν•΄λ‹Ήν•˜λŠ”μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” λ³€μˆ˜μ΄λ‹€.
  • case κ°’:: λ³€μˆ˜κ°€ νŠΉμ • κ°’κ³Ό μΌμΉ˜ν•  λ•Œ ν•΄λ‹Ή case의 μ½”λ“œ 블둝이 μ‹€ν–‰λœλ‹€. λͺ¨λ“  case 블둝은 break;둜 μ’…λ£Œλ˜μ–΄μ•Ό ν•œλ‹€.
  • default:: μ–΄λ– ν•œ case에도 ν•΄λ‹Ήν•˜μ§€ μ•Šμ„ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝이닀. 이 뢀뢄은 μƒλž΅ κ°€λŠ₯ν•˜λ‹€.

[ν™œμš©μ˜ˆμ‹œ]

int dayOfWeek = 3;
String dayName;

switch (dayOfWeek) {
    case 1:
        dayName = "μΌμš”μΌ";
        break;
    case 2:
        dayName = "μ›”μš”μΌ";
        break;
    case 3:
        dayName = "ν™”μš”μΌ";
        break;
    // ... λ‹€λ₯Έ μš”μΌλ“€μ— λŒ€ν•œ case
    default:
        dayName = "μ•Œ 수 μ—†λŠ” μš”μΌ";
}

System.out.println("μ˜€λŠ˜μ€ " + dayName + "이닀.");

πŸ” 반볡문

For문

for문은 μ§€μ •λœ 횟수만큼 μ½”λ“œ 블둝을 반볡 μ‹€ν–‰ν•˜λŠ” μ œμ–΄λ¬Έμ΄λ‹€. 특히 숫자의 λ²”μœ„λ₯Ό μ΄μš©ν•˜μ—¬ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ 효과적으둜 μ‚¬μš©λœλ‹€.

[κΈ°λ³Έν˜•μ‹]

for (μ΄ˆκΈ°μ‹; 쑰건식; 증감식) {
    // 쑰건식이 참일 λ™μ•ˆ 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ
}

 

  • μ΄ˆκΈ°μ‹ (for λ‹€μŒμ˜ κ΄„ν˜Έ μ•ˆμ—μ„œ 졜초 ν•œ 번만 μ‹€ν–‰): 반볡문이 μ‹œμž‘λ  λ•Œ μ΄ˆκΈ°ν™”λ˜λŠ” λΆ€λΆ„μœΌλ‘œ, λ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•œλ‹€.
  • 쑰건식 (for λ‹€μŒμ˜ μ„Έλ―Έμ½œλ‘  λ‹€μŒμ— μœ„μΉ˜): 반볡이 진행될 쑰건을 μ§€μ •ν•˜λŠ” λΆ€λΆ„μœΌλ‘œ, 쑰건식이 참일 λ™μ•ˆ 반볡 μ‹€ν–‰λœλ‹€.
  • 증감식 (for λ‹€μŒμ˜ 두 번째 μ„Έλ―Έμ½œλ‘  λ‹€μŒμ— μœ„μΉ˜): 각 반볡이 끝날 λ•Œλ§ˆλ‹€ μ‹€ν–‰λ˜λŠ” λΆ€λΆ„μœΌλ‘œ, λ³€μˆ˜ 값을 μ¦κ°€μ‹œν‚€κ±°λ‚˜ κ°μ†Œμ‹œν‚€λŠ” λ“±μ˜ μ‘°μž‘μ„ μˆ˜ν–‰ν•œλ‹€.
  • 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ (for λ‹€μŒ μ€‘κ΄„ν˜Έ λ‚΄λΆ€): 쑰건식이 참일 λ™μ•ˆ 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝이닀.

[ν™œμš©μ˜ˆμ‹œ]

for (int i = 1; i <= 5; i++) {
    System.out.println("ν˜„μž¬ 숫자: " + i);
}

System.out.println("반볡 μ’…λ£Œ!");

While문

while문은 쑰건이 참일 λ™μ•ˆ νŠΉμ •ν•œ μ½”λ“œ 블둝을 반볡적으둜 μ‹€ν–‰ν•˜λŠ” μ œμ–΄λ¬Έμ΄λ‹€. while문을 μ‚¬μš©ν•˜μ—¬ νŠΉμ • 쑰건을 λ§Œμ‘±ν•  λ•ŒκΉŒμ§€ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.

[κΈ°λ³Έν˜•μ‹]

while (쑰건식) {
    // 쑰건식이 참일 λ™μ•ˆ 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ
}
  • 쑰건식 (while λ‹€μŒμ˜ κ΄„ν˜Έ μ•ˆμ— μœ„μΉ˜): ν‰κ°€λ˜μ–΄ μ°Έ λ˜λŠ” κ±°μ§“μœΌλ‘œ νŒλ‹¨λ˜λŠ” ν‘œν˜„μ‹μ΄λ‹€. 쑰건식이 참일 κ²½μš°μ—λ§Œ μ½”λ“œ 블둝이 반볡 μ‹€ν–‰λœλ‹€.
  • 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ (while λ‹€μŒ μ€‘κ΄„ν˜Έ λ‚΄λΆ€): 쑰건식이 참일 λ™μ•ˆ 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝이닀.
  • while문의 쑰건식을 항상 참이게 μ„€μ •ν•˜λ©΄ λ°˜λ“œμ‹œ μ’…λ£Œμ‘°κ±΄μ„ μ΄μš©ν•΄μ„œ break;λ₯Ό μ‚¬μš©ν•˜κ³  λΉ μ Έλ‚˜μ™€μ•Ό ν•œλ‹€.

[ν™œμš©μ˜ˆμ‹œ]

int count = 1;

while (true) {
    System.out.println("ν˜„μž¬ 카운트: " + count);
    count++;
    if(count==3){        // <---- μ’…λ£Œμ‘°κ±΄μ΄ λœλ‹€.
    	break;     
    }
}

System.out.println("반볡 μ’…λ£Œ!");

do While λ¬Έ

do-while문은 일단 ν•œ λ²ˆμ€ μ½”λ“œ 블둝을 μ‹€ν–‰ν•˜κ³ , κ·Έ 후에 쑰건을 κ²€μ‚¬ν•˜μ—¬ 쑰건이 참인 λ™μ•ˆ 반볡 μ‹€ν–‰ν•˜λŠ” μ œμ–΄λ¬Έμ΄λ‹€.

[κΈ°λ³Έν˜•μ‹]

do {
    // 일단 ν•œ 번 μ‹€ν–‰λ˜λŠ” μ½”λ“œ
} while (쑰건식);
  • 반볡 μ‹€ν–‰λ˜λŠ” μ½”λ“œ (do λ‹€μŒ μ€‘κ΄„ν˜Έ λ‚΄λΆ€): 일단 ν•œ λ²ˆμ€ 무쑰건 μ‹€ν–‰λ˜λŠ” μ½”λ“œ 블둝이닀.
  • 쑰건식 (while λ‹€μŒμ˜ κ΄„ν˜Έ μ•ˆμ— μœ„μΉ˜): 반볡 μ‹€ν–‰ 후에 κ²€μ‚¬λ˜λŠ” 쑰건으둜, 쑰건식이 참일 κ²½μš°μ—λŠ” κ³„μ†ν•΄μ„œ 반볡 μ‹€ν–‰λœλ‹€.

[ν™œμš©μ˜ˆμ‹œ]

int count = 1;

do {
    System.out.println("ν˜„μž¬ 카운트: " + count);
    count++;
} while (count <= 5);

System.out.println("반볡 μ’…λ£Œ!");

πŸ’‘ κ²°λ‘ 

μ œμ–΄λ¬Έμ„ ν™œμš©ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ΄ λ‹€μ–‘ν•œ μž…λ ₯κ³Ό 상황에 λŒ€μ‘ν•  수 μžˆλ„λ‘ ν•˜λ©°, μ½”λ“œλ₯Ό 더 μœ μ—°ν•˜κ²Œ κ΄€λ¦¬ν•˜κ³  가독성 있게 μž‘μ„±ν•  수 μžˆλ‹€.


 

λŒ“κΈ€

TOP

λŠ¦μ—ˆλ‹€κ³  생각할 땐 λ„ˆλ¬΄ λŠ¦μ€ κ±°λ‹€.