(1) Hello World
fun main(args: array<String>) { println("Hello World") }
해당 코드를 보고 알 수 있는 사실
- 함수를 최상위 수준에 정의 가능
- 자바와 달리 배열 처리를 위한 문법 존재 X
- ;(Semicolon)의 불필요
- 여러가지 표준 라이브러리 함수들의 간결화
(2) 함수
fun max(a: Int, b: Int): Int { return if (a > b) a else b }
Kotlin Statement와 Expression의 구분
문(Statement) | 자신을 둘러싸고 있는 안쪽 블록의 최상위 요소로 존재함 |
아무런 값을 만들어 내지 않음 | |
Java의 일반적인 제어구조 | |
식(Expression) | 값을 만들어내며, 다른 식의 하위 요소를 계산에 참여 가능 |
kotlin의 일반적인 제어구조 |
[식이 본문인 함수]
fun max(a: Int, b: Int): Int { return if (a > b) a else b }
fun max(a: Int, b: Int): Int = return if (a > b) a else b
fun max(a: Int, b: Int) = if(a > b) a else b
- Kotlin은 정적 타입 지정 언어이므로, 컴파일 시점에 모든 식의 타입을 지정해야 하며, 반환타입이 정해져야 한다.
- 하지만, 식이 본문인 함수(등호와 식으로 이루어진 함수)의 경우에는 사용자가 타입을 적지 않아도, 컴파일러가 정해준다.
- 반대로 블록이 본문인 함수는 반드시 반환 타입을 지정해야 하고, return 문을 사용하여 반환 값을 명시해야 함.
[IntelliJ 사용 시]
인텔리제이 IDEA 사용 시, 함수를 두 가지 방식으로 나누어서 변환할 수 있다.
- Convert to Block Body : 분문이 중괄호로 이루어진 '블록이 본문인 함수' 로 변환
- Convert to expression Body : 본문이 등호와 식으로 이루어진 '식이 본문인 함수'로 변환
(3) 변수
Kotlin에서는 키워드로 변수선언을 시작하는 대신, 변수의 이름 뒤에 타입을 명시하거나 생략하도록 허용한다.
val question = "삶, 우주, 그리고 모든 것에 대한 궁극적인 질문" val answer: Int = 42 // 해당 변수 선언 시, 타입 표기 생략 가능 val yearsToCompute = 7.5e6 // 부동소수점 상수 사용 시, Double로 변경 (7.5 * 10^6)
[val 과 var]
- val
- 변경 불가능한 참조를 저장하는 변수
- 초기화 하고 나면 재대입이 불가
- 참조가 가르키는 객체의 내부 값은 변경 가능
- Java의 final 변수의 역할과 동일
- var
- 변경 가능한 참조
- 값은 변경할 수 있으나, 타입이 변경되서는 안됨
- Java의 일반 변수의 역할과 동일
(4) 문자열 템플릿
fun main(args: Array<String>) { val name = if (args.size > 0) args[0] else "Kotlin" println("Hello, $name!") }
- Kotlin은 변수를 문자열 안에 사용할 수 있다.
- 문자열 리터럴의 필요한 곳에 변수를 넣되 변수 앞에 $ 표시를 추가해야 한다.
- Java 문자열 접합 연산을 사용하여 효율적으로 표시 가능하다. ("Hello, " + name + "!")
- 한글의 경우, 문자열 템플릿을 사용 시, 유니코드 변수 이름과 충돌의 우려가 있으므로, 변수를 중괄호로 감싸야 한다.
'Kotlin in Action' 카테고리의 다른 글
3. [2] 함수를 호출하기 쉽게 만들기 (0) | 2024.02.22 |
---|---|
3. [1] Kotlin에서 Collection 만들기 (0) | 2024.02.22 |
2. [4] 대상을 이터레이션: while과 for 루프 (0) | 2024.02.22 |
2. [3] 선택 표현과 처리: enum과 when (1) | 2024.02.22 |
2. [2] 클래스와 프로퍼티 (1) | 2024.01.29 |