특이한 점 : C 계열 언어와 달리 세미콜론을 안찍어도 됨. 자료형을 선언하는 방식이 C 계열 언어들과 많이 다름.
패키지 정의
package my.demo
import java.util.*
// ...
함수 정의
fun sum(a: Int, b: Int) : Int{
return a + b
}
fun sum(a: Int, b: Int) = a + b
fun printKotlin(): Unit{
println("Hello Kotlin")
}
// Unit은 생략 가능
fun printKotlin(){
println("Hello Kotlin")
}
지역 변수 정의
val a : Int = 1
val b = 2
// 값의 형식을 입력하지 않으면 컴파일러가 자동으로 추론하여 자료형을 초기화함.
val c : Int // 값이 입력되지 않으면 컴파일 오류
var x = 5
x += 1
주석
문자열 템플릿
var a = 1;
var s1 = "a is $a" // $를 이용하여 변수를 표기함. (PowerShell과 동일한듯)
a = 2;
val s2 = "${s1.replace("is", "was")}, but now is $a"
// String 하나 안에서 쉽게 만들어낼 수 있음.
조건문
fun maxOf(a:Int, b:Int): Int{
if(a > b) {
return a
}
else {
return b
}
}
// 조건식으로 사용할 수도 있음.
fun maxOf(a:Int, b:Int) = if(a > b) a else b;
nullable
fun parseInt(str: String): Int?{
// 정수가 아닐 경우 null을 리턴
// ?를 안쓰고 null을 리턴하면 컴파일 오류.
}
fun printProduct(arg1: String, arg2: String){
val x: Int? = parseInt(arg1)
val y: Int? = parseInt(arg2)
if(x != null && y != null){
println(x*y);
}
}
자동 타입 변환
fun getStringLength(obj: Any): Int?{
if(obj is String){
// obj가 자동으로 String 타입으로 변환이 됨.
return obj.length
}
return null
}
While loop
val items = listOf("apple", "banana", "kiwi")
var index = 0
while(index < items.size){
println("item at $index is ${items[index]}")
index++
}
// 별거없음.