var
변수값 변경 가능
사용 예시
fun main() {
var a: Int
a = 123
print(a)
// 세미콜론은 생략 가능
}
// 출력
123
val
선언시에만 초기화 가능(변경 불가능)
java의 final
과 같음
사용 예시
fun main() {
val b: Int = 123
b = 3 // 변수값 변경이 불가능하므로 에러 컴파일 에러 발생
print(b)
}
?
변수의 값이 null
이 될 수 있음을 표시
?
를 사용하지 않는 경우 선언시 null
불가능
사용 예시
fun main() {
var a: Int? = null
print(a)
}
// 출력
null
toType()
메서드를 통해 형변환 가능
코틀린은 암시적 형변환을 지원하지 않음
사용 예시
fun main() {
var a: Int = 123
var b: String = a.toString()
print(b)
}
// 출력
"123"
사용 예시
fun main() {
// Type 생략하지 않는 경우
var intArr: Array<Int> = arrayOf(1, 2, 3, 4)
// Type 생략 가능하고 null이 들어갈 수 있는 배열
var intArr2 = arrayOfNulls<Int>(5)
// Any는 모든 타입 들어갈 수 있음
var anyArr: Array<Any> = arrayOf(1, "two", 3, 4)
print(intArr[0])
print(intArr2[1])
print(anyArr[1])
}
// 출력
1
null
"two"
기본형 함수
예시 코드
fun main() {
print(sum(1, 2, 3))
}
fun sum(a: Int, b: Int, c: Int): Int {
return a + b + c
}
// 출력
6
단일 표현식 함수
예시 코드
fun main() {
print(1, 2, 3)
}
// 반환 타입은 표현식을 통해 추론 가능
fun add(a: Int, b: Int, c: Int) = a + b + c
// 출력
6
if
예시 코드
fun main() {
var a = 7
if(a > 6) {
println(a)
} else {
print("exit")
}
}
// 출력
7
is
데이터 타입 비교에 사용
예시 코드
fun main() {
var a: Any = 1
if(a is Int) {
println("int")
}
if(a is String) {
println("String")
}
}
// 출력
"int"
when
java의 switch
와 비슷한 기능
예시 코드
fun main() {
exWhen(2)
}
fun exWhen(a: Any) {
when(a) {
1 -> print(a)
"two" -> print(a)
else -> print("cant service")
}
}
// 아래처럼 변수 활용 가능
fun exWhen(a: Any) {
var b =
when(a) {
1 -> a
2 -> "two"
else -> "cant service"
}
print(b)
}
// 출력
"cant service"