Programming/Java

Java์˜ Expression vs Statement

UNarD 2025. 3. 28. 09:31

๐ŸŒŸ Java์˜ Expression๊ณผ Statement

๊ฐ’์„ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ์™€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ, ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ์š”?

์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ฝ๋‹ค ๋ณด๋ฉด ์–ด๋””๊นŒ์ง€๊ฐ€ ๊ฐ’์ด๊ณ  ์–ด๋””๋ถ€ํ„ฐ๊ฐ€ ์‹คํ–‰์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜…
Expression๊ณผ Statement๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๋‚˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ์ž˜ ์ฝํ˜”์Šต๋‹ˆ๋‹ค!

Expression์€ ๊ณ„์‚ฐ๊ธฐ์— ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ,
Statement๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”น Expression (ํ‘œํ˜„์‹)

ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.

๋งˆ์น˜ ์ˆ˜์‹์ฒ˜๋Ÿผ, ๊ณ„์‚ฐํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
3 + 5๋Š” ๊ณ„์‚ฐํ•˜๋ฉด 8์ด ๋˜์ฃ . ์ด์ฒ˜๋Ÿผ ํ‰๊ฐ€ํ•˜๋ฉด ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด Expression์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ
int a = 5, b = 10;
int c = a + b;  // 'a + b'๋Š” Expression โ†’ 15๋กœ ํ‰๊ฐ€๋จ

๐ŸŽ€ Expression ์ข…๋ฅ˜

์ข…๋ฅ˜ ์˜ˆ์‹œ ๊ฒฐ๊ณผ
์‚ฐ์ˆ  2 + 3, a * b 5, 24
๋…ผ๋ฆฌ a < b, flag == true true ๋˜๋Š” false
๋ฌธ์ž์—ด ์—ฐ๊ฒฐ "Hello, " + "world!" "Hello, world!"
์กฐ๊ฑด (์‚ผํ•ญ) a > b ? a : b a ๋˜๋Š” b
๋ฉ”์„œ๋“œ ํ˜ธ์ถœ Math.max(a, b) ๋‘ ์ˆ˜ ์ค‘ ํฐ ๊ฐ’
์ธ์Šคํ„ด์Šค ์ƒ์„ฑ new Date() Date ๊ฐ์ฒด
โœจ ์‚ฌ์šฉ ์˜ˆ์‹œ
public class ExpressionExample {
    public static void main(String[] args) {
        int a = 4, b = 6;

        System.out.println(a + b);                 // ์‚ฐ์ˆ  โ†’ 10
        System.out.println(a < b);                 // ๋…ผ๋ฆฌ โ†’ true
        System.out.println("Hello, " + "world!");  // ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ โ†’ Hello, world!
        System.out.println(a > b ? a : b);         // ์กฐ๊ฑด โ†’ 6
        System.out.println(Math.max(a, b));        // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ โ†’ 6
        System.out.println(new java.util.Date());  // ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ โ†’ ํ˜„์žฌ ๋‚ ์งœ
    }
}

๐Ÿค” ๊ทธ๋Ÿผ void ๋ฉ”์„œ๋“œ๋„ Expression์ผ๊นŒ?

๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ๋ฌธ๋“ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
System.out.println()์ฒ˜๋Ÿผ void ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋„ Expression์ผ๊นŒ์š”? ๐Ÿง

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด, ๋ฌธ๋ฒ•์ ์œผ๋กœ๋Š” Expression์ด ๋งž์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ JLS(Java Language Specification)๋Š” ์ด๋ ‡๊ฒŒ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

void ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” Expression์€ ์•„๋ฌด๊ฒƒ๋„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š”๋‹ค(denotes nothing).
๋”ฐ๋ผ์„œ Expression Statement๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, void ๋ฉ”์„œ๋“œ๋Š” Expression์ด์ง€๋งŒ ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ํ•„์š”ํ•œ ๊ณณ์—๋Š” ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

int x = System.out.println();  // โŒ ์ปดํŒŒ์ผ ์—๋Ÿฌ
System.out.println();          // โœ… Expression Statement๋กœ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

โš ๏ธ void ๋ฉ”์„œ๋“œ๋Š” Expression์ด์ง€๋งŒ,
๊ฐ’์ด ์—†์–ด์„œ Expression Statement๋กœ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค!!


๐Ÿ”น Statement (๋ฌธ์žฅ)

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

Expression์ด ๊ฐ’์„ ๋งŒ๋“œ๋Š” ์žฌ๋ฃŒ๋ผ๋ฉด, Statement๋Š” ๊ทธ ์žฌ๋ฃŒ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ค์ œ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๋Š” ํ–‰๋™์ž…๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์€ ์„ธ๋ฏธ์ฝœ๋ก (;)์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ
int x = 5;                      // ๋ณ€์ˆ˜ ์„ ์–ธ
System.out.println("Hi");       // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
for (int i = 0; i < 10; i++) {  // ๋ฐ˜๋ณต ๋ธ”๋ก
    // ...
}

๐ŸŽ€ Statement ์ข…๋ฅ˜

์ข…๋ฅ˜ ์„ค๋ช… ์˜ˆ์‹œ
Expression Statement Expression + ์„ธ๋ฏธ์ฝœ๋ก  a = 5;, i++;, print();
Declaration Statement ๋ณ€์ˆ˜ ์„ ์–ธ int a;, String name;
Control Flow Statement ์กฐ๊ฑด/๋ฐ˜๋ณต ํ๋ฆ„ ์ œ์–ด if, for, while, switch
Block Statement ์—ฌ๋Ÿฌ Statement ๋ฌถ์Œ { statement1; statement2; }
Jump Statement ํ๋ฆ„ ๋ณ€๊ฒฝ break, continue, return, throw
โœจ ์‚ฌ์šฉ ์˜ˆ์‹œ
public class StatementExample {
    public static void main(String[] args) {
        int a = 5;                     // Declaration Statement

        a = 10;                        // Expression Statement (ํ• ๋‹น)
        System.out.println(a);         // Expression Statement (๋ฉ”์„œ๋“œ ํ˜ธ์ถœ)
        a++;                           // Expression Statement (์ฆ๊ฐ)

        if (a > 5) {                   // Control Flow Statement
            System.out.println("5๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค");
        }

        for (int i = 0; i < 3; i++) {  // Control Flow Statement
            if (i == 2) break;          // Jump Statement
            System.out.println(i);
        }

        {                              // Block Statement
            int temp = 100;
            System.out.println(temp);
        }
    }
}

๐ŸŒŸ ๋žŒ๋‹ค์™€ Expression

// Expression ๋ฐฉ์‹ (๊ฐ„๊ฒฐ)
Function<Integer, Integer> square = x -> x * x;

// Statement ๋ฐฉ์‹
Function<Integer, Integer> square = x -> { return x * x; };

๋žŒ๋‹ค์‹์—์„œ Expression์„ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
{ return x * x; } ๋Œ€์‹  x * x Expression๋งŒ ์จ๋„ ๋ฉ๋‹ˆ๋‹ค.


โ˜• ๋งˆ๋ฌด๋ฆฌ

๊ตฌ๋ถ„ Expression Statement
๋ชฉ์  ๊ฐ’์„ ์ƒ์„ฑ ๋™์ž‘ ์ˆ˜ํ–‰
๊ฒฐ๊ณผ ๋‹จ์ผ ๊ฐ’ ์‹คํ–‰ ํ๋ฆ„ ๊ตฌ์„ฑ
์‚ฌ์šฉ ๋‹ค๋ฅธ ์‹ ๋‚ด๋ถ€์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰
์˜ˆ์‹œ a + b, new Date() int x = 5;, if (...) {}

๐Ÿ“š ์ฐธ๊ณ ์ž๋ฃŒ