티스토리 뷰
Hello, Kotlin!
fun main(args: Array<String>) {
println("Hello, Kotlin")
}
위 코드는 코틀린에서 "Hello, Kotlin"을 출력하는 코드이다. 위의 코드에서는 다음과 같은 코틀린의 특성을 발견할 수 있다.
- 함수 선언시 fun 키워드를 사용한다.
- 파라미터 뒤에 파라미터의 타입을 쓴다.
- 함수가 클래스 밖에서도 존재할 수 있다.
- 배열은 클래스(Array 클래스)로 표현된다.
- System.out.println 대신 println을 사용한다. 표준 자바 라이브러리 함수를 간결한 문법으로 제공하는 wrapper를 코틀린 표준 라이브러리가 제공한다.
- 줄 끝에 세미콜론(;)을 붙이지 않아도 된다.
함수
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
위에서도 언급했듯 코틀린의 함수는 fun 키워드로 시작하고, fun 다음에는 함수명(위의 예제 코드에서는 max가 함수명)이 온다. 함수명 뒤에는 괄호 안에 파라미터 목록이 오고 그 다음에 함수의 리턴 타입이 위치한다. 파라미터목록과 리턴타입 사이에는 콜론(:)으로 구분한다.
코틀린의 if는 문장이 아니라 결과를 만들수 있는 식이다.
fun max(a: Int, b: Int): Int = if(a > b) a else b
max 함수는 등호(=)를 사용해서 더 간결하게 표현할 수도 있다. 식 하나로 이루어져있기 때문에 중괄호를 없애고 return을 제거하여 식 앞에 등호를 붙이면 된다.
중괄호로 둘러싸인 함수는 블록이 본문인 함수, 등호와 식으로 표현된 함수는 식이 본문인 함수라고 불린다.
fun max(a: Int, b: Int) = if(a > b) a else b
식이 본문인 max 함수는 다시 또 위와 같이 표현할 수 있다. 콜론이 사라지고 등호가 사라졌다. 식이 본문인 함수이기 때문에 반환 타입이 생략되어도 컴파일러가 타입을 추론(type inference)를 해준다.
블록이 본문인 함수는 반드시 반환 타입을 명시해주어야 한다.
변수
val name = "kotlin in action"
val index = 2
val page: Int = 64
코틀린에서 변수를 선언할 때 val 키워드로 시작하고 변수명이 온다. 초기화 시에는 변수명 뒤의 타입을 생략 가능하다. 타입을 생략하면 컴파일러가 타입을 추론한다. 만약 변수 선언시에 초기화를 하지 않으면 컴파일러가 타입을 추론할 수 없기 때문에 해당 경우에는 타입을 명시해주어야 한다.
가변 변수와 불변 변수
코틀린에서는 변수를 선언할 때 val, var 2가지 키워드를 사용한다. 2가지 키워드의 특징은 다음과 같다.
var
- variable(변할수 있는)에서 가져왔다
- 변경 가능한 참조이다
- 가변 변수를 선언할 때 사용한다
val
- value(값)에서 가져왔다
- 변경 불가능한 참조를 저장한다
- 한 번 초기화를 하면 변경이 불가능하다
- 자바의 final 변수에 해당한다
코틀린에서 변수를 선언할 때는 기본적으로 val 키워드를 사용하고, 변경이 필요한 경우에는 var 키워드를 사용한다.
val 키워드는 참조가 변경 불가능한 것이지 참조 대상 자체의 내부 값들이 변경 불가능하다는 것은 아니다.
var 키워드에서 변수의 값은 변경 가능하지만 타입이 변경 가능하지 않다.
문자열 템플릿
fun main(args: Array<String>) {
val language = "Kotlin"
println("Hello, $language")
}
코틀린에서 문자열 템플릿 기능을 사용할 수 있다. 문자열 안에 "$변수명"을 입력하면 변수에 해당하는 값으로 대치된다. $language 대신 ${language}를 사용해도 같은 결과값을 얻을 수 있다.
문자열에 $ 기호를 사용하고 싶다면 이스케이프 문자 \를 사용하면 된다.
fun main(args: Array<String>) {
val language = "Kotlin"
println("Hello, \$language")
}
위의 코드는 변수의 값으로 대치시켜주는 것이 아니라 그대로 출력한다.
- Total
- Today
- Yesterday
- postman
- Squash and merge
- git
- mysql
- DGS Framework
- Python
- pm.expect
- Basic Type
- python3
- solidity
- string
- Kotlin
- go 특징
- 주생성자
- postman tests
- 1차 인터뷰
- 확장 함수
- 코틀린
- graphql
- Kotlin In Action
- 2차 인터뷰
- hashcode
- pm.test
- 코딩테스트
- postman collection
- 네이버 2022 공채
- java
- downTo
- github
- squash merge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |