2.1.5 식과 연산자
지금까지 사용한 코틀린 식을 다음과 같이 분류할 수 있다.
• 각 타입에 속하는 구체적인 값을 표현하는 리터럴(12, 3.56)
• 변수/프로퍼티 참조와 함수 호출(a, readLine(), "abc".length, "12".toInt())
• 전위와 후위 단항 연산(-a, ++b, c--)
• 이항 연산(a + b, 2 * 3, x < 1)
모든 식은 정해진 타입이 있으며, 이 타입은 연산이 만들어내는 값의 범위와 값에 허용되는 연산을 결정한다. 예를 들어 1이라는 리터럴은 Int 타입이지만, readLine()!!이라는 식은 String 타입이다.
변수 참조와 함수 호출에 점(.)으로 구분된 수신 객체(receiver) 연산을 포함시킬 수 있다는 점에 유의하라. 예를 들어 readLine()!!.toInt()는 readLine()!!이 만들어낸 값의 문맥에서 String에(이 타입은 readLine()!!의 결과 타입이다) 정의된 toInt()라는 함수를 호출한다.
단항과 이항 연산마다 연산 순서를 결정하는 우선순위(precedence)가 정해져 있다. 예를 들어 2 + 3 * 4라는 식에서는 3 * 4를 먼저 계산한 후 그 결과에 2를 더해서 14를 얻는다. 이 순서를 바꾸려면 괄호를 사용한다. (2 + 3) * 4는 5 * 4와 같아서 20으로 계산된다. 이 장에서 살펴볼 연산자의 우선순위를 다음 표에 정리했다.