woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

Statement와 Expression은 어떻게 다를까? #31

Open syoun602 opened 2 years ago

syoun602 commented 2 years ago

문제

람다의 문법에는 표현식 스타일과 블록 스타일이 존재하는데, 그렇다면 statement(문) 와 expression(식)은 어떻게 다를까?

선정 배경

퀴즈를 틀려서.... statement와 expression에 대한 이해도가 부족하다고 생각되어 알아보았습니다.

관련 챕터

syoun602 commented 2 years ago

표현식과 구문은 모두 프로그램에서 작성하는 명령어들이며, 컴퓨터로 하여금 특정 일을 수행하도록 명령한다.

이때, 차이점은 구문은 액션을 수행하지만 아무것도 리턴하지 않고, 표현식은 액션을 수행하여 결과를 리턴한다. 람다 표현식을 사용하여 프로그래밍할 때 구문보다는 표현식을 생성하여 사용하는 것이 낫다.

이유는 다음과 같다.

  1. 구문은 아무것도 리턴하지 않기 때문에 side-effect를 발생하거나 메모리를 이상한 값으로 채울 수 있다.
  2. 구문과는 달리 표현식은 두 개 이상의 표현식을 하나로 조합하여 사용할 수 있다.

즉, 표현식은 값을 가지는데 비해 구문은 값을 가지지 않는다. 만약 함수에게 인수로 넘겨줄 수 있다면 이는 표현식이고 불가능하다면 구문이다.

구문은 command이고 expression은 request라고도 하는데 다음을 살펴보겠습니다. 예를 들어 구문은 이걸 해라, 파일을 열어, collection을 비워 등의 명령인데, 표현식은 특정 식을 계산해줘, 파일의 내용을 돌려줘, 새로운 컬렉션을 만들어줘 등의 요구를 합니다.