일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring
- AutoConfiguration
- 프록시
- Immutable
- 컴퓨터시스템
- hibernate
- 토비의스프링3.1
- FunctionalInterfaces
- 링킹
- 메이븐
- Kotlin for Java Developers
- beanfactory
- JPA
- exception
- gradle
- 클린코드
- 링커
- ApplicationContext
- String
- DispatcherServlet
- IOC
- java
- springboot
- ORM
- DesignPattern
- 토비의스프링
- lambda
- springwebmvc
- 빌드툴
- 자바
- Today
- Total
엔지니어로 가는 길
자바 문서 빈출 단어 evaluate, expression, statement, block 본문
영어로 된 문서를 읽을 때 자주 등장하는 단어가 있다. 단어의 뜻을 그대로 가져온 것이 아니라 자바에서 '이런 것을 이렇게 부르자'하고 정한 것이기 때문에 사전을 참고해도 잘 이해되지 않는다. 그런 단어 중에서 자주 등장하는 단어 몇 가지를 정리해둔다면 앞으로 문서를 읽고 이해하는데 큰 도움이 될 것이다.
Expression
Expression은 자바 인터프리터가 evaluate 하는 대상으로, evaluate의 결과 어떤 값이 나온다. Evaluate도 자주 등장하니 알아두는 게 좋다. 사전에 따르면 '평가하다' 정도인데 '풀다, 계산하다'로 생각하는 게 더 이해하기 수월할 것 같다.
Expression은 변수, 연산자, 프리미티브 값, 메소드 호출, 다른 expression 등을 가질 수 있는데 그냥 값이 도출될 수 있는 것이면 뭐든 다 expression으로 봐도 좋지 않을까? 변수 그 자체도 expression이다. 변수가 값을 가지고 있으므로 값을 도출해낼 수 있기 때문이다. 프리미티브 값 그 자체도 expression이다. 역시 값을 도출해낼 수 있기 때문이다. 즉, 연산자는 여러 expression(피연산자)을 합쳐 더 큰 범위의 expression을 만드는 일을 한다고 볼 수 있다. 예시를 살펴보자. 아래의 코드에서 굵게 표시된 것은 모두 expression이다.
위의 코드를 조금 더 자세히 살펴보자. 코드의 첫 줄에 존재하는 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
Expression과 statement는 세미콜론 하나 차이일 때도 있지만 항상 그런 것은 아니다. Statement가 더 큰 개념이라고 보면 될 것 같다. 더 크다는 게 모든 expression은 statement라는 뜻이 아니라, 하나의 statement에 여러 expression이 있을 수 있다는 뜻이다.
Block
Block은 statments의 집합이다. (공집합도 block이다.) 중괄호로 표현하며 statement가 허락되는 곳이면 어디든 block이 사용될 수 있다.
참고
docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
Java in a Nutshell 7th
'프로그래밍 > Java' 카테고리의 다른 글
Java String이 불변(immutable)인 이유 (0) | 2021.11.02 |
---|---|
Java 배열의 얕은 복사(shallow copy)와 깊은 복사(deep copy) (0) | 2020.12.27 |
자바를 통해 다이나믹 프록시(Dynamic Proxy)를 구현하는 방법 (8) | 2020.10.26 |
자바 프록시와 데코레이터 패턴(Decorator Pattern)에 대해 알아보자 (0) | 2020.10.23 |
Java StringBuilder를 쓰는 이유 (0) | 2020.10.13 |