이 코드의 a와 b 같은 변수를 지역 변수라고 한다. 함수 안(이 경우는 main())에서 정의했기 때문이다. 이와 별도로 코틀린에서는 프로퍼티(property)라는 변수와 비슷한 값을 정의할 수 있다. 값을 그대로 읽거나 쓰는 변수와 달리, 프로퍼티에서는 값을 읽거나 쓸 때 계산을 수행할 수 있다. 예를 들어, 앞으로 보겠지만 코틀린의 모든 문자열에는 문자열에 포함된 문자의 개수가 들어있는 length라는 프로퍼티가 있다.
자바에 익숙하다면, 변수 타입을 지정하지 않았는데도 프로그램이 성공적으로 컴파일되고 실행된다는 사실을 알았을 것이다(그림 2-1). 이유는 타입 추론(type inference)이라는 기능 때문이다. 타입 추론은 대부분의 경우 컴파일러가 코드의 문맥에서 타입을 도출해주는 언어 기능이다. 여기서 컴파일러는 toInt() 함수가 Int 타입의 값을 반환한다는 사실을 알고 있으며, 이 결과를 변수에 대입했기 때문에 변수 타입 또한 Int로 추론한다. 타입 추론 덕분에 코틀린은 강한 타입 지정(strongly typed) 언어인 동시에 사용자가 불필요한 타입 정보를 코드에 추가해서 코드가 지저분해지는 일을 막을 수 있다. 이 책의 여러 예를 통해 타입 추론이 얼마나 코틀린 프로그래밍을 단순화해주는지 확인할 수 있을 것이다.
자바 vs. 코틀린 자바도 자바 10부터 코틀린과 비슷한 지역 변수 타입 추론을 도입했다. 이 말은 이제 자바로 다음과 같은 코드를 작성할 수 있다는 뜻이다.
var text = "Hello"; // 자동으로 text의 타입을 String으로 추론한다