노마드개발자 2023. 6. 1. 19:19

자바에서 expression과 statement은 프로그램의 기본 구성 요소로, 서로 다른 역할과 특성을 가지고 있습니다.

1. Expression:

  • expression은 하나의 값으로 평가되는 코드 단위입니다.
  • expression은 변수, 연산자, 메소드 호출 등을 포함할 수 있으며, 이들을 조합해 단일 값을 생성합니다.
  • 예를 들어, 5, x, x + y, methodCall(), true 등이 expression입니다.
  • expression은 다른 expression의 일부가 될 수 있으며, 복잡한 expression을 형성하기 위해 중첩될 수 있습니다.

2. Statement :

  • statement은 자바에서 실행 가능한 최소한의 독립적인 코드 단위입니다.
  • statement은 프로그램의 실행 흐름을 제어하며, 종류에는 expression statement, 조건 statement(if, switch), 반복 statement(for, while), 제어 statement(break, continue), 선언 statement(변수 선언) 등이 있습니다.
  • statement은 세미콜론(;)으로 끝나는 경우가 많습니다.
  • 예를 들어, int x = 5;, System.out.println("Hello");, for(int i = 0; i < 10; i++) { ... } 등이 statement입니다.

expressionstatement의 주요 차이점은 expression은 값으로 평가되지만, statement은 독립적인 실행 단위로 작동한다는 것입니다. 즉, 모든 expression은 statement가 될 수 있지만(expression statement), 모든 statement가 expression은 아닙니다. 예를 들어, int x = 5;는 statement입니다(변수 선언과 expression을 포함), 하지만 5는 단순히 값으로 평가되는 expression 입니다.

 

 

Expression

Expression이 하나의 값으로 평가된다는 것을 이해하기 위해, 간단한 예시로 설명해보겠습니다. expression은 어떤 계산이나 연산을 수행하고 그 결과를 하나의 값으로 반환하는 코드의 일부입니다. 이 값은 다양한 형태로 나타날 수 있습니다 - 숫자, 문자열, 객체 등이 될 수 있습니다.

예를 들어, 다음과 같은 자바 코드를 봅시다:

int a = 5;
int b = 10;
int c = a + b;


여기서 a + bexpression입니다. 이 expressionab의 값을 더하는 연산을 수행하고, 그 결과를 하나의 값(여기서는 15)으로 반환합니다. 이 결과는 그 다음에 c라는 변수에 할당됩니다.

expression은 더 복잡한 형태로도 나타날 수 있습니다. 예를 들어, Math.sqrt(a * a + b * b)ab의 값을 제곱한 다음 더하고, 그 결과의 제곱근을 계산하는 expression 입니다. 이 expression은 최종적으로 하나의 숫자 값으로 평가됩니다.

즉, expression은 어떤 연산이나 계산을 수행하고, 그 결과를 하나의 값으로 반환하는 코드의 조각이라고 볼 수 있습니다. 이값은 변수에 할당될 수도 있고, 다른 expression의 일부로 사용될 수도 있습니다.

 

다음은 여러 expression :

1. 산술 expression :

  • 2 + 3: 이 expression은 두 숫자를 더하고 결과로 5를 반환합니다.
  • a * b: 만약 a가 4이고 b가 6이라면, 이 expression은 24를 반환합니다.

2. 논리 expression :

  • a < b: 만약 a가 5이고 b가 10이라면, 이 expression true를 반환합니다.
  • flag == true: 여기서 flag가 불리언 변수라면, 이 expression flag의 값에 따라 true 또는 false를 반환합니다.

3. 문자열 연결 expression :

  • "Hello, " + "world!": 이 expression은 두 문자열을 연결하고 "Hello, world!"라는 새로운 문자열을 생성합니다.

4. 조건 expression:

  • a > b ? a : b: 이것은 삼항 연산자의 예입니다. a b보다 크면 a를 반환하고, 그렇지 않으면 b를 반환합니다.

5. 함수/메소드 호출 expression :

  • Math.max(a, b): 만약 a가 3이고 b가 7이라면, 이 expression은 Math.max 메소드를 호출하여 7을 반환합니다.

6. 인스턴스 생성 expression :

  • new Date(): 이 expression은 Date 클래스의 새 인스턴스를 생성하고 그 참조를 반환합니다.

expression은 연산을 수행하고 결과를 하나의 값으로 반환합니다. 이 값은 다른 변수에 할당될 수도 있고, 다른 expression의 일부로 사용될 수도 있습니다. 이러한 방식으로 expression은 프로그램 내에서 다양한 형태로 활용됩니다.

 

Statement

자바에서 Statement는 프로그램의 실행 흐름을 구성하는 기본 단위입니다. Statement는 실행 가능한 코드의 최소 단위로, 다양한 종류가 있으며 각각 특정한 작업을 수행합니다. 다음은 자바에서 볼 수 있는 주요 statement의 종류와 각각에 대한 설명입니다:

1. Expression Statements:

  • expression을 포함하고 세미콜론(;)으로 끝나는 statement입니다.
  • 예: 할당(a = 5;), 메소드 호출(print("Hello");), 증감 연산(i++;).

2. Declaration Statements:

  • 변수나 필드를 선언하는 statement입니다.
  • 예: int a;, String name;.

3. Control Flow Statements:

  • 프로그램의 실행 흐름을 제어하는 statement 입니다. 여기에는 조건 statement과 반복 statement이 포함됩니다.
  • 예: if, for, while, do-while, switch.

   - 조건 statement (Conditional Statements):
     -> 특정 조건에 따라 다른 코드 블록을 실행합니다.
     -> 예: if(condition) {...}, switch(expression) {...}.

   - 반복 statement (Loop Statements):
     -> 특정 조건이 만족될 때까지 코드 블록을 반복해서 실행합니다.
     -> 예: for(init; condition; increment) {...}, while(condition) {...}, do {...} while(condition);.

4. Block Statements:

  • 중괄호 {}로 둘러싸인 여러 statement의 집합입니다.
  • 블록은 스코프를 형성하여 변수의 범위를 제한합니다.
  • 예: { statement1; statement2; ... }.

5. Jump Statements:

  • 실행 흐름을 중단하거나 변경하는 statement입니다.
  • 예: break, continue, return, throw.

   - break: 반복 statement이나 switch statement을 중단합니다.
   - continue: 반복 statement의 현재 반복을 중단하고 다음 반복으로 진행합니다.
   - return: 현재 메소드를 종료하고 값을 반환합니다.
   - throw: 예외를 발생시킵니다.

자바에서 각 statement는 프로그램의 구조를 형성하고, 특정한 작업을 수행하거나 프로그램의 실행 흐름을 제어하는 역할을 합니다. 프로그래머는 이러한 다양한 종류의 statement을 적절히 조합하여 원하는 로직을 구현합니다.

 

Expression Statement

Expression Statement란 자바에서 expression을 포함하고 세미콜론(;)으로 끝나는 statement을 말합니다. 이러한 statementexpression을 실행하고 그 결과를 버립니다(즉, 결과를 다른 곳에 저장하거나 반환하지 않음). expression 자체는 값으로 평가되지만, expression statement는 프로그램의 실행 흐름에서 특정 작업을 수행합니다.

Expression statement의 예시는 다음과 같습니다:

1. 할당 statement: 변수에 값을 할당하는 expression입니다.

  • 예: a = 5;, b = a + 1;

2. 함수 호출: 메서드를 호출하는 expression입니다.

  • 예: System.out.println("Hello World");, someMethodCall();

3. 증감 연산자: 변수의 값을 증가시키거나 감소시키는 expression입니다.

  • 예: i++;, counter--;

이러한 statement들은 각각 하나의 값으로 평가되는 expression을 포함하며, 프로그램의 실행 도중 해당 expression을 실행하도록 지시합니다. Expression statement는 프로그램에서 실제 작업을 수행하고, 그 결과는 다른 곳에 저장되거나 반환되지 않는 특징을 가지고 있습니다.