연산자의 차이점은 Kotlin과 같음
이 문서에서는 Kotlin의 is
연산자와 as
연산자의 차이점을 소개합니다. 이러한 연산자의 사용은 비슷해 보일 수 있지만 서로 다릅니다.
Kotlin is
연산자
Kotlin is
연산자는 유형 검사에 사용됩니다. 인터페이스에 다른 변수가 있는 여러 클래스가 있고 공용 변수를 다른 메서드와 상호 교환하여 사용하려고 한다고 가정합니다.
이 경우 두 메서드에서 요구하는 매개변수의 데이터 유형이 유사한지 확인해야 합니다. 데이터 유형이 유사하지 않으면 코드에서 오류가 발생합니다.
예를 들어, 한 메서드에 문자열
데이터 유형의 매개 변수가 필요한 경우 전달하는 변수의 데이터 유형을 확인해야 합니다. Kotlin is
연산자를 사용하면 이를 수행할 수 있습니다.
부울 값을 반환하고 is
연산자의 두 피연산자의 데이터 유형이 모두 동일한 경우 true
를 반환합니다. 그렇지 않으면 false
를 반환합니다.
Kotlin is
연산자는 유형 검사 연산자입니다. 따라서 변수의 데이터 유형이 우리가 생각하는 것과 같은지 확인하는 데 사용할 수 있습니다.
코드 예:
fun main(args: Array<String>) {
var s: Any = "Hey, this is Kotlin programming!"
val r = s is String
println("The variable s is a String: " + r)
}
출력:
The variable s is a String: true
Kotlin is
연산자는 Java의 instanceof
연산자와 동일합니다. 따라서 클래스의 개체를 확인하는 데 사용할 수 있습니다.
코드 예:
class exampleClass {
var v: String = "Kotlin Programming!"
fun exampleFunc() {
println("Official Android language is - " + v)
}
}
fun main(args: Array<String>) {
val obj = exampleClass() // Creating an object
obj.exampleFunc()
val result = obj is exampleClass // Using the Kotlin is operator
println("The object obj is an instance of the class exampleClass: " + result)
}
출력:
Official Android language is - Kotlin Programming!
The object obj is an instance of the class exampleClass: true
Kotlin as
연산자
Kotlin as
연산자는 명시적 유형 캐스팅에 사용됩니다. Kotlin as
는 런타임 안전 연산자가 아닙니다.
실수로 잘못된 개체를 전달하면 as
연산자로 인해 오류가 발생합니다. 따라서 항상 Kotlin의 안전한 캐스트 연산자 as?
를 사용하는 것이 좋습니다.
로?
연산자는 가능한 경우 캐스팅된 값을 반환합니다. 그렇지 않으면 null
을 반환합니다.
안전하지 않은 캐스트 연산자 as
사용
안전하지 않은 캐스트 연산자 as
는 대상 유형으로 변환할 수 있는 피연산자를 전달할 때까지 제대로 작동합니다.
코드 예:
fun main(args: Array<String>){
val s: String = "Convertible"
val s1: String = s as String
println(s1)
}
Convertible
그러나 대상 유형과 호환되지 않는 것을 변환하려고 하면 오류가 발생합니다.
코드 예:
fun main(args: Array<String>){
val s: String = 18
val s1: String = s as String
println(s1)
}
오류 출력:
안전한 캐스트 연산자 as?
오류를 피하는 것이 가장 좋습니다.
안전한 캐스트 연산자 As?
사용
앞서 언급했듯이 안전 캐스트 연산자는 유형 캐스팅이 불가능할 때 null
을 반환합니다.
fun main(args: Array<String>){
var s: Any = "Kotlin"
var s1 = 18
// Returns null when casting is not possible
val s2: String? = s1 as? String
println(s2)
}
출력:
null
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn