인프런에서 제공하고 있는 강의를 보고 정리한 글입니다.
코틀린에서 타입을 다루는 방법
Kotlin 에서는 암시적 타입 변경이 불가능하다. 때문에 명시적으로 to변환 타입을 사용해야 한다.
val number1 = 3
val number2 : Long = number1.toLong()
변수가 nullable 이라면 적절한 처리가 필요하다.
val number1: Int? = 3
val number2: Long = number1?.toLong() ?: 0L
일반 타입에 대한 캐스팅은 ?
fun printAgeIfPerson(obj: Any) {
if (obj is Person) { // if obj is person type. java's instance of
val person = obj as Person // (Person) obj 와 같음.
println(person.age)
}
}
코틀린에서는 is, !is, as, as? 를 이용해서 타입을 확인하고 캐스팅한다.
Kotlin 의 특이한 타입 3가지
- Any
- Java 의 Object 역할. 모든 객체의 최상위 타입
- 모든 Primitive Type의 최상위 타입도 Any
- Any 자체로는 null을 포함할 수 없어서 null 을 포함하고 싶다면, Any? 로 표현
- Any 에 equals, hashCode, toString이 존재함.
- Unit
- Unit 은 Java 의 void 와 동일한 역할.
- void 와 다르게 Unit 은 그 자체로 타입 인자로 사용 가능하다.
- 함수형 프로그래밍에서의 Unit 은 단 하나의 인스턴스만 갖는 타입을 의미한다. 즉, 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현한다.
- Nothing
- Nothing 은 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할을 함.
- 무조건 예외를 반환하는 함수, 무한 루프 함수 등등,,, 실제로는 많이 쓰이지 않음.
- String interpolation / String indexing
- $ 를 사용해서 바로 쓰기 가능. ${person.name} 이렇게 사용이 가능함.
- 여러줄에 걸친 String 을 작성할 때, """ 내용 ~~ """.trimIndent() 이렇게 쓸 수 있음.
- 문자열에 있는 특정 문자를 대괄호를 통해서 배열로 가져올 수 있음. ex. str[0], str[2] ,,,,
코틀린에서 연산자를 다루는 방법
- 단항 연산자/ 산술 연산자
- 비교 연산자와 동등성, 동일성
- 동등성 : 두 객체의 값이 같은지?
- 동일성 : 완전히 동일한 객체인가? 주소가 같은가?
- 동일성은 === 을 쓰고, 동등성에서는 == 을 쓴다.
- 논리 연산자/ 코틀린에 있는 특이한 연산자
- Lazy 연산?
- 자바도 동일하지만, if 문 내에서 앞에 있는 조건이 이미 true 이면 뒤를 볼 것도 없이, 바로 조건 체크를 하지 않는다.
if (fun1() || fun2()) {
println("main 문")
}
fun fun1(): Boolean {
println("fun 1")
return true;
}
fun fun2(): Boolean {
println("fun 2")
return false;
}
// fun1
// main 문
in / !in : 컬렉션이나 범위에 포함되어 있다, 포함되어 있지 않다.
a..b : a부터 b 까지의 범위 객체를 생성한다.
- 연산자 오버로딩
val money1 = Money(1_000L)
val money2 = Money(2_000L)
println(money1 + money2)
'[ Kotlin ]' 카테고리의 다른 글
코틀린에서 클래스를 다루는 방법 - 9강 (0) | 2024.08.23 |
---|---|
코틀린에서 함수를 제어하는 방법 - 8강 (0) | 2024.08.23 |
코틀린에서 코드를 제어하는 방법 - 6강, 7강 (0) | 2024.08.23 |
코틀린에서 코드를 제어하는 방법 - 5강 (0) | 2024.08.22 |
코틀린에서 변수와 타입, 연산자를 다루는 방법 #1 (0) | 2024.08.22 |