• [Java] ch4 ์ œ์–ด๋ฌธ

    2023. 8. 31.

    by. @leeeun

    ์ œ์–ด๋ฌธ

    ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ ์‹คํ–‰ํ•˜๋Š” ํ๋ฆ„์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ

    • ์กฐ๊ฑด(์„ ํƒ)๋ฌธ - if๋ฌธ, switch๋ฌธ
    • ๋ฐ˜๋ณต๋ฌธ - for๋ฌธ, while๋ฌธ, do-while๋ฌธ

     

    01 if๋ฌธ

    ๊ธฐ๋ณธ ๊ตฌ์กฐ

    if (์กฐ๊ฑด๋ฌธ) {
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1>;
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2>;
        ...
    } else {
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅA>;
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅB>;
        ...
    }
    

    ์กฐ๊ฑด๋ฌธ์„ ํ…Œ์ŠคํŠธํ•ด์„œ ์ฐธ์ด๋ฉด if ๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค(์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1, ์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2)์„ ์ˆ˜ํ–‰

    ๊ฑฐ์ง“์ด๋ฉด else ๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค(์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅA, ์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅB)์„ ์ˆ˜ํ–‰

     

    ๋น„๊ต์—ฐ์‚ฐ์ž

    ๋น„๊ต ์—ฐ์‚ฐ์ž ์„ค๋ช…

    x < y x๊ฐ€ y๋ณด๋‹ค ์ž‘๋‹ค
    x > y x๊ฐ€ y๋ณด๋‹ค ํฌ๋‹ค
    x == y x์™€ y๊ฐ€ ๊ฐ™๋‹ค
    x != y x์™€ y๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค
    x >= y x๊ฐ€ y๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค
    x <= y x๊ฐ€ y๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค

     

    ์กฐ๊ฑด์—ฐ์‚ฐ์ž

    ์—ฐ์‚ฐ์ž ์„ค๋ช…

    x && y x์™€ y ๋ชจ๋‘ ์ฐธ์ด์–ด์•ผ ์ฐธ์ด๋‹ค(and)
    x  
    !x x๊ฐ€ ๊ฑฐ์ง“์ด๋ฉด ์ฐธ์ด๋‹ค(not)

     

    contains ๋ฉ”์„œ๋“œ

    • list์— ํ•ด๋‹น item์ด ์žˆ๋Š”์ง€ ์กฐ์‚ฌ
    • list์ด๋ฆ„.contsains(item๋ช…) ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ

     

    else if๋ฌธ

    if (์กฐ๊ฑด๋ฌธ) {
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1> 
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2>
        ...
    }else if (์กฐ๊ฑด๋ฌธ) {
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1>
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2>
        ...
    } else {
       <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1>
       <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2>
       ... 
    }
    

    02 switch/case๋ฌธ

     

    ๊ธฐ๋ณธ๊ตฌ์กฐ

    switch(์ž…๋ ฅ๋ณ€์ˆ˜) { 
        case ์ž…๋ ฅ๊ฐ’1: ์ˆ˜ํ–‰๋ฌธ
             break;
        case ์ž…๋ ฅ๊ฐ’2: ์ˆ˜ํ–‰๋ฌธ
             break;
        ...
        default: ์ˆ˜ํ–‰๋ฌธ
             break;
    }
    
    • if๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ ์กฐ๊ฑด์‹์— ๋”ฐ๋ผ ์ˆ˜ํ–‰๋ฌธ์˜ ์ˆ˜ํ–‰์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ž…๋ ฅ๋ณ€์ˆ˜์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” case ์ž…๋ ฅ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น case๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค์ด ์‹คํ–‰
    • ์ž…๋ ฅ ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์€ byte, short, char, int, enum, String ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋งŒ ๊ฐ€๋Šฅ
    • break๋Š” ํ•ด๋‹น case๋ฌธ์„ ์‹คํ–‰ํ•œ ๋’ค ๋‹ค์Œ case๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  switch๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•จ
    • break๋ฌธ์ด ์—†์œผ๋ฉด ๋‹ค์Œ case๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค์ด ์‹คํ–‰๋จ
    • case๊ฐ€ ํ•˜๋‚˜๋„ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด default๋ฌธ์žฅ์ด ์‹คํ–‰๋จ
    • ์ž๋ฐ” 12๋ฒ„์ „ ์ดํ›„ ๊ฒฐ๊ณผ๊ฐ’์„ ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž (->)๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ณ  (case "c" -> 2; ) multiple case๋ฅผ ์ง€์› (์ด์ „์—๋Š” case "a" ์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ case๋งŒ ์ง€์› -> case "a","b")
    • yield ์˜ˆ์•ฝ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    03 while๋ฌธ

    while (์กฐ๊ฑด๋ฌธ) {
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ1>;
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ2>;
        <์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ3>;
        ...
    }
    
    • ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ธ ๋™์•ˆ while์•ˆ์˜ ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰

     

    ๋ฌดํ•œ๋ฃจํ”„

    • ์กฐ๊ฑด๋ฌธ ์•ˆ์„ true๋กœ

     

    break

    • while๋ฌธ์„ ๊ฐ•์ œ๋กœ ๋ฉˆ์ถฐ์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

     

    continue

    • ๋‹ค์Œ ์ˆ˜ํ–‰๋ฌธ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  while ๋ฌธ์˜ ๋งจ ์ฒ˜์Œ, ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
    int a = 0;
    while (a < 10) {
        a++;
        if (a % 2 == 0) {
            continue;  // ์ง์ˆ˜์ธ ๊ฒฝ์šฐ ์ถœ๋ ฅ์„ ํ•˜์ง€ ์•Š๊ณ  ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
        }
        System.out.println(a);  // ํ™€์ˆ˜๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.
    }
    

     

    do-while๋ฌธ

    do{
    	์‹คํ–‰๋ฌธ
    }while(์กฐ๊ฑด์‹)
    • while๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ ๋ธ”๋ก ๋‚ด๋ถ€์˜ ์‹คํ–‰๋ฌธ์„ ์šฐ์„  ์‹คํ–‰์‹œํ‚ค๊ณ  ์กฐ๊ฑด์‹์— ๋”ฐ๋ผ ์‹คํ–‰์„ ๊ณ„์†ํ• ์ง€ ๊ฒฐ์ •

    04 for๋ฌธ

     

    ๊ธฐ๋ณธ ๊ตฌ์กฐ

    for (์ดˆ๊ธฐ์น˜; ์กฐ๊ฑด๋ฌธ; ์ฆ๊ฐ€์น˜) {
        ...
    }
    
    • continue ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (for๋ฌธ์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ)
    • break ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(for๋ฌธ์„ ๋ฒ—์–ด๋‚จ)

     

    ์ด์ค‘ for๋ฌธ

    ๊ตฌ๊ตฌ๋‹จ ์ถœ๋ ฅ ์˜ˆ์‹œ

    • System.out.print - ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅ
    • System.out.println - ๋งˆ์ง€๋ง‰์— ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅ

    05 for each๋ฌธ

     

    ๊ธฐ๋ณธ ๊ตฌ์กฐ

    for (type ๋ณ€์ˆ˜๋ช…: iterate) {
        body-of-loop
    }
    
    • iterate : ๋ฃจํ”„๋ฅผ ๋Œ๋ฆด ๊ฐ์ฒด, iterate ๊ฐ์ฒด์—์„œ ํ•œ ๊ฐœ์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ช…์— ๋Œ€์ž…๋˜์–ด for ๋ฌธ์ด ์ˆ˜ํ–‰๋จ
    • iterate์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์€ ๋ฃจํ”„๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•(๋ฐฐ์—ด์ด๋‚˜ ArrayList ๋“ฑ)๋งŒ ๊ฐ€๋Šฅ
    • ๋ณ€์ˆ˜๋ช…์˜ type(์ž๋ฃŒํ˜•)์€ iterate ๊ฐ์ฒด์— ํฌํ•จ๋œ ์ž๋ฃŒํ˜•๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•จ

     

    ์˜ˆ์ œ

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class Sample {
        public static void main(String[] args) {
            ArrayList<String> numbers = new ArrayList<>(Arrays.asList("one", "two", "three"));
            for (String number : numbers) {
                System.out.println(number);
            }
        }
    }
    
    • ๋ฃจํ”„๋ฅผ ๋Œ๋ฆด ๊ฐ์ฒด → ArrayList์ธ numbers (iterate)
    • string์„ ์š”์†Œ๋กœ ๊ฐ€์ง„ ArrayList๋ฅผ string์ธ number ๋ณ€์ˆ˜์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋Œ€์ž…
    • ๋”ฐ๋กœ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜ ์—†๊ณ , ํ•œ ๋‹จ๊ณ„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

     

    ์ธ์šฉ

     

    ์ ํ”„ ํˆฌ ์ž๋ฐ”

    ์ด ์ฑ…์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ๊ฟˆ๊พธ๋ฉฐ ์ž๋ฐ” ์ž…๋ฌธ์„œ๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ฑ…์ด๋‹ค. ์ด ์ฑ…์€ ์ž๋ฐ”์˜ ๋ฌธ๋ฒ•์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ž์„ธํžˆ ์•Œ๊ธฐ ๋ณด๋‹จ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง€๋Š” ์ž๋ฐ”๋ฅผ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ…

    wikidocs.net

     

    ๋Œ“๊ธ€