[Kotlin] Kotlin Basic (1) - 변수, 값, 자료형, 타입, is, as

yuseon Lim·2021년 4월 14일
0

Kotlin

목록 보기
2/11
post-thumbnail
post-custom-banner

변수와 값 (Variables & Value)

Kotlin은 valvar을 사용해 변수를 선언

  • val
    • 값이 변경되지 않는 변수에 사용
    • val을 사용해 선언된 변수에 값 재할당 불가
  • var
    • 값이 변경될 수 있는 변수에 var사용

자료형

  • Kotlin의 기본 자료형은 모두 객체
  • Java보다 더 엄격한 타입체크
  • Java와 달리 원시타입(primitive)과 waraaper type를 구분하지 않는다.
    • Byte, Short, Int, Long, Float, Double, Char, Boolean
    • UByte, UShort, UInt, ULong
  • Kotlin은 서로 다른 타입의 값을 자동 변환해주지 않는다.
val one = 1 // Int
val oneLong = 1L // Long
val pi = 3.15 // Double
// val one: Double = 1 // Error: type mismatch
val oneDouble = 1.0 // Double
  • 명시적으로 변환해주어야 한다.
val i = 10
val l: Long = i.toLong()
  • 변환해주는 함수는 toShort(), toInt(), toFloat() 등을 사용한다.

타입 추론 (Type Inference)

앞선 포스트에서 언급했듯이, Kotlin은 타입을 명시하지 않아도 알아서 추론해준다.

Any

  • 자바의 Object와 비슷한 개념
  • 자료형을 결정하지 않은채 변수를 선언하고 싶을때 사용
val t: Any = 10
println((t is Int)) // true

Any는 모든 자료형 클래스의 최상단에 위치해 코틀린의 모든 클래스는 Any라는 슈퍼 클래스를 가진다.
이로인해 Any를 사용한 자료형은 묵시적 변환에 의해 어떤 자료형으로든 변경될 수 있다.

타입 체크(is), 타입 변환(as)

is

// 기본적인 is 사용
조건문 (인스턴스 is 클래스타입){}
  • is, !is
if (obj is String) {
    print(obj.length)
}

if (obj !is String) { // same as !(obj is String)
    print("Not a String")
} else {
    print(obj.length)
}
  • 스마트 캐스팅 is
fun demo(x: Any) {
    if (x is String) {
        print(x.length) // x is automatically cast to String
    }
}

x가 Any 타입이였더라도 if절에 들어가면 is로 인해 스마트캐스팅 된다.

as

  • as는 조건문 아니라 전체적인 코드에서 is처럼 스마크캐스팅을 할 수 있다.
인스턴스 = super 클래스로 만든 인스턴스 as 다운 캐스팅할 sub 클래스 타입

참고자료

profile
🔥https://devyuseon.github.io/ 로 이사중 입니다!!!!!🔥
post-custom-banner

0개의 댓글