• nullable type : null을 가질 수 있는 type (type 뒤에 물음표) 
 
    ex) var str: String? = "AAA"
        str=null     // str은 nullable type으로 null을 가질 수 있다. 
    println(${str.length})    // nullable 타입은 null이 가능하므로 참조하는 것이 위험하다.=> str이 null일 때 Error가 난다. 

  • nullable type의 참조의 방법 
 ex)
  println(${str?.length}) // save call을 하는 방법 ,   str이 null이면 null 출력.
   println(${str!!.length})  //   느낌표 2개를 붙이면 str이 null 이라도 참조/호출 . str이 null인 경우 null pointer exception 발생
  println(${str?.length ?: "null이면 여기 출력됨"})     // elvis operator와 함께 사용할 수 있다.

      

  • non-null type : null을 가질 수 없는 type
ex) var str : String = "AAA"
    str=null   //   -> str은 non-null type이라 null을 가질 수 없다. 따라서 Error


'Kotlin' 카테고리의 다른 글

[Kotlin] Any 클래스, 타입 체크  (3) 2018.07.18
[Kotlin] 기본 자료형, 변수와 상수  (0) 2018.07.18

  Kotlin의 Any Class와 타입 체크



※ 정리

 ☞ Any : kotlin.Any 모든 코틀린 클래스의 최상위 (java.lang.Object)

 ☞ type check : 런타임에서 type을 검사,  'is' , '!is' 연산자 (java의 instanceOf와 같음)




 ▶ Any type은 어떠한 자료형으로도 바뀔 수 있습니다.

 ▶ a3의 type이 처음에는 String -> Double형 -> Boolean 형으로 바뀐다.


1
2
3
4
5
    val a: Any = 1234  // kotlin.Any,  코틀린의 최상위 타입 클래스=? java Object와 비슷하지만 똑같지는 않다
    val a2: Any = 'A'
    var a3: Any = "xyz"
    a3 = 3.141592  // double
    a3 = true // boolean
cs

 




 ▶ Type checkis로 한다. 

 ▶ 만약, 아닌 것을 판달할 때에는 is 앞에 !을 붙인다. ex) 7번째줄에서... val b2 = b1 !is Int

 ▶ 7번째 줄에서, b1이 Int형이면 b2는 true, Int형이 아니면 false가 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
    val a: Any = 1234  // kotlin.Any,  코틀린의 최상위 타입 클래스=? java Object와 비슷하지만 똑같지는 않다
    val a2: Any = 'A'
    var a3: Any = "xyz"
    a3 = 3.141592  // double
    a3 = true // boolean
    val b1 = 365
    val b2 = b1 is Int  // 'is' type check => java의 instanceOf
 
    println("b1 is Int = ${b1 is Int}, b2 = ${b2}")
    println("a is Int = ${a is Int}")
    println("a2 is Char = ${a2 is Char}")
    println("a3 is Boolean = ${a3 is Boolean}")
    println("a3 is String = ${a3 is String}")
cs




 ▼ 위 코드의 결과 화면




 



'Kotlin' 카테고리의 다른 글

[Kotlin] null가능형, 예외 및 null 안전성  (0) 2018.09.20
[Kotlin] 기본 자료형, 변수와 상수  (0) 2018.07.18

   BASIC TYPES

 ▶ Types : 자료형, 타입 (Java와의 호환성)

 ▶ Basic Types : 기본형에 해당하는 타입들, 클래스들 (Primitives)

 ▶ Value : 값 (수량, 코드값, 부호, 상태, 참거짓 등과 같은 데이터의 표현)

 ▶ Literal : 리터럴, 기호화된 간략식 관용 표현, L, f, F, ., 0x, ob

 ▶ Variable / Constant : 기본형 변수/상수

 ▶ Type Inference : 값에 의한 타입 추론, 명시적 타입 선언

 ▶ Numeric ( Integer / Real number ) : 수치계열(정수,실수) 

 ▶ Boolean : 논리계열, true, false

 ▶ Char, String : 문자계열 (Unicode)


 기본 자료형

1
2
3
4
5
6
7
8
9
10
11
12
    val a: Byte = 127
    val b: Short = 30000
    val c: Int = 2000
    val d: Long = 230300000L // L을 생략할 수도 있지만 명시하는게 좋음
    val f1: Float = 3.14f
    val f2: Float = 3.14F   // 대문자 F도 가능
    val g: Double = 32.3242332323
    val h: Boolean = true // 논리형
    val h2 = false 
    val a2 = 1234
    val i = 'A' // Char Type Inference
    val i2: Char = 'B'
cs


   변수와 상수의 선언

     val 상수명: Type = Value , var 변수명: Type = Value 꼴이며, 

  ※val c: Int = 2000 과 같이 명시적으로 타입을 선언 할 수 있고, val c=2000과 같이 Type을 생략하고 선언 할 수 있다.

 ( 값에 따라 type을 결정해준다)

  


  VARIABLE(변수) VS. CONSTANT(상수)

 ▶ variable: 변수 (저장하는 데이터가 언제든 변할 수 있는, 메모리 공간에 붙인 이름) 

 ▶ constant : 상수 (단 한번 초기화되는 value 값을 갖는, 일종의 네임드 상수); java의 final

  

1
2
3
4
  val a=7
    // a++  <-  a가 상수라서 불가능.
    var b=5
    b++  // <- b가 변수라서 가능.
cs

 ※위와 같이 상수(val 타입)는 읽기 전용 변수로써 수정 불가능



'Kotlin' 카테고리의 다른 글

[Kotlin] null가능형, 예외 및 null 안전성  (0) 2018.09.20
[Kotlin] Any 클래스, 타입 체크  (3) 2018.07.18

+ Recent posts