엔지니어로 가는 길

자바 문서 빈출 단어 evaluate, expression, statement, block 본문

프로그래밍/Java

자바 문서 빈출 단어 evaluate, expression, statement, block

탐p슨 2020. 11. 26. 16:34
728x90

영어로 된 문서를 읽을 때 자주 등장하는 단어가 있다. 단어의 뜻을 그대로 가져온 것이 아니라 자바에서 '이런 것을 이렇게 부르자'하고 정한 것이기 때문에 사전을 참고해도 잘 이해되지 않는다. 그런 단어 중에서 자주 등장하는 단어 몇 가지를 정리해둔다면 앞으로 문서를 읽고 이해하는데 큰 도움이 될 것이다.

 

Expression

Expression은 자바 인터프리터가 evaluate 하는 대상으로, evaluate의 결과 어떤 값이 나온다. Evaluate도 자주 등장하니 알아두는 게 좋다. 사전에 따르면 '평가하다' 정도인데 '풀다, 계산하다'로 생각하는 게 더 이해하기 수월할 것 같다.

 

Expression은 변수, 연산자, 프리미티브 값, 메소드 호출, 다른 expression 등을 가질 수 있는데 그냥 값이 도출될 수 있는 것이면 뭐든 다 expression으로 봐도 좋지 않을까? 변수 그 자체도 expression이다. 변수가 값을 가지고 있으므로 값을 도출해낼 수 있기 때문이다. 프리미티브 값 그 자체도 expression이다. 역시 값을 도출해낼 수 있기 때문이다. 즉, 연산자는 여러 expression(피연산자)을 합쳐 더 큰 범위의 expression을 만드는 일을 한다고 볼 수 있다. 예시를 살펴보자. 아래의 코드에서 굵게 표시된 것은 모두 expression이다.

 

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

 

위의 코드를 조금 더 자세히 살펴보자. 코드의 첫 줄에 존재하는 expression 'cadence = 0'은 세 개로 구성되어 있다. 'cadence'라는 변수, 연산자 '=', 프리미티브 값 0. 'cadence'도 그 자체로 하나의 expression이고, 프리미티브 값 0도 그 자체로 하나의 expression이다. 연산자 '='에 의해 두 expression은 하나의 expression으로 합쳐지며 'cadence = 0'이라는 expression이 되었다.

 

Expression이 반환하는 값의 데이터 타입은 expression에서 사용된 원소에 의해 결정된다. 'cadence = 0'에서 연산자 '='는 왼쪽 피연산자의 타입의 데이터를 반환하는데 cadence의 타입이 int이므로 이 expression은 int 타입 데이터를 반환한다.

 

Statement

러프하게 보면 statement는 코드를 구성하는 하나하나의 문장(가독성을 위해 여러 줄로 나눈 문장 말고 세미콜론으로 끝나는 완전한 문장)이라고 볼 수 있다. 다음의 expression에 세미콜론을 붙이면 statement가 된다.

 

  • 대입 expressions
  • ++ 또는 -- 연산자만 사용한 expression
  • 메소드 호출
  • 객체 생성 expressions

 

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

 

Expression과 statement는 세미콜론 하나 차이일 때도 있지만 항상 그런 것은 아니다. Statement가 더 큰 개념이라고 보면 될 것 같다. 더 크다는 게 모든 expression은 statement라는 뜻이 아니라, 하나의 statement에 여러 expression이 있을 수 있다는 뜻이다.

 

Block

Block은 statments의 집합이다. (공집합도 block이다.) 중괄호로 표현하며 statement가 허락되는 곳이면 어디든 block이 사용될 수 있다.

 

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

 


 

참고

docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Java in a Nutshell 7th

728x90
Comments