๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Lang/โ˜• Java

โ˜• Java * ์กฐ๊ฑด๋ฌธ ( if, else-if, switch ) feat. ์‚ผํ•ญ์—ฐ์‚ฐ์ž

์‚ฌ์‹ค ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด์˜ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์€ ๋‹ค ๋น„์Šทํ•˜๋‹ค.

if, while, for ๋ณดํ†ต ์ด ์„ธ๊ฐ€์ง€ ์นœ๊ตฌ๋ฅผ ํ•„๋‘๋กœ else if, do while, for each, switch ๋ญ ์ด๋ ‡๊ฒŒ ๋” ๋‚ด์šฉ์ด ์žˆ๋‹ค.

 

์“ฐ๋Š” ๋ฐฉ๋ฒ•๋„ ๋น„์Šทํ•˜์ง€๋งŒ ์–ธ์–ด์— ๋”ฐ๋ผ ์กฐ๊ธˆ์”ฉ ๋ชจ์–‘์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์žˆ์œผ๋‹ˆ

์ผ๋‹จ Java language์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

๐Ÿ“Œ ์กฐ๊ฑด๋ฌธ

์ž๋ฐ”์—์„œ๋Š” if, else if, switch๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

If ์™€ else if
  • ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ฉด if ๋ฌธ์˜ body๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฑฐ์ง“์ด๋ฉด ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • else if ํ˜•์‹์œผ๋กœ if ๋ฌธ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ๋œ ์กฐ๊ฑด๋ฌธ ์ค‘์—์„œ ์•ž์˜ ์กฐ๊ฑด๋ฌธ์ด ์‹คํ–‰ ๋˜๋ฉด ์—ฐ๊ฒฐ ๋œ ๋’ค์˜ ์กฐ๊ฑด๋ฌธ๋“ค์€ ์‹คํ–‰ ๋˜์ง€ ์•Š๋Š”๋‹ค.
public class Test {

    public static void main(String[] args) {

        int a = 1;

        if (a == 2) {
            System.out.println("a == 2");
        } else if (a == 1) {
            System.out.println("first a == 1");
        } else if (a == 1) { // java:S1862
            System.out.println("second a == 1");
        } else {
            System.out.println("else");
        }
    }
 
}
first a == 1

ํ™•์ธ์„ ์œ„ํ•˜์—ฌ a == 1 ์กฐ๊ฑด๋ฌธ์„ ๋‘๋ฒˆ์ ์—ˆ๋Š”๋ฐ ์‚ฌ์‹ค ์ €๋ ‡๊ฒŒ ์ ์œผ๋ฉด Related "if/else if" statements should not have the same condition (java:S1862)์˜ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธด๋‹ค. major ์ˆ˜์ค€์˜ ๋ฒ„๊ทธ์ด๊ธด ํ•˜์ง€๋งŒ ์ €๋ ‡๊ฒŒ ์ฝ”๋”ฉํ•  ์ด์œ ๋„ ์—†์œผ๋‹ˆ ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์„ ๋ฐ˜๋ณตํ•ด์„œ ์“ฐ์ง€ ๋ง์ž.

 

 

switch
  • ์ˆซ์žํ˜•๊ณผ ๋ฌธ์žํ˜• ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•ด๋‹น๋˜๋Š” ๊ฐ’์˜ case์˜ body๊ฐ€ ์‹คํ–‰๋˜๊ณ  break๋ฅผ ๋งŒ๋‚˜๋ฉด switch๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.
  • ์‹คํ–‰ ๋œ case body๋ฌธ์— break๋ฌธ์ด ์—†๋‹ค๋ฉด break๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
    break ๋ฏธ ์ž‘์„ฑ ์‹œ runningํ•˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ์ง€๋Š” ์•Š์ง€๋งŒ Switch cases should end with an unconditional "break" statement(java:S128)์— ๋”ฐ๋ผ break๋ฅผ ํ•ด์ฃผ๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค. blocker ์ˆ˜์ค€์˜ ๊ถŒ๊ณ (?) ์‚ฌํ•ญ์ด๋ผ๊ณ  ํ•˜๋‹ˆ ์ฝ”๋”ฉํ•˜์ž.
  • switch๋ฌธ์— ๋ชจ๋“  case์— ํ•ด๋‹น ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ default body๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
    default ๋ฏธ ์ž‘์„ฑ ์‹œ runningํ•˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ์ง€๋Š” ์•Š์ง€๋งŒ "switch" statements should have "default" clauses(java:S131)์— ๋”ฐ๋ผ default๋ฅผ ์ฝ”๋”ฉํ•˜๋ผ๊ณ  ํ•œ๋‹ค. critical ์ˆ˜์ค€์˜ ๊ถŒ๊ณ (?) ์‚ฌํ•ญ์ด๋ผ๊ณ  ํ•˜๋‹ˆ ๋ฐ˜๋“œ์‹œ ์ฝ”๋”ฉํ•˜์ž.
public class Test {

    public static void main(String[] args) {

        int a = 1;
        
        switch (a) {
            case 1:
                System.out.println("hi 1");
                // break; // java:S128
            case 2:
                System.out.println("hi 2");
                break;
            case 3:
                System.out.println("hi 3");
                break;
            // default: // java:S131
            //     System.out.println("default");
            //     break;
        }
    }
    
}
hi 1
hi 2

 

 

์‚ผํ•ญ์—ฐ์‚ฐ์ž
  • ์กฐ๊ฑด๋ฌธ?์ฐธ์ผ๊ฒฝ์šฐ:๊ฑฐ์ง“์ผ๊ฒฝ์šฐ ์˜ ํ˜•ํƒœ๋กœ ์“ฐ์ด๋ฉฐ true/false์— ๋”ฐ๋ผ ํ•ด๋‹น ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐ’์„ ๋Œ๋ ค์ค€๋‹ค.
public class Test {

    public static void main(String[] args) {
        int a = 1;

        String result = a == 1 ? "true" : "false";
        System.out.println(result);
    }
    
}
true