변수 Kotlin

1. 선언

읽기전용
val
 -> final 변수 변경불가능

val a: Int=1
val b = 2
val c: Int
c = 3

var
 -> 변경가능
var x = 5
x += 1

top-level
val PI = 3.14
var x = 0
fun incrementX() {
 x+=1
}

2. Nullity
- 소모적인 널체크 로직을 문법적으로 일관화

!!
-> 절대 널이 아니며 널이면 에러발생

?
->  널일 수 있다.
fun parseInt(str: String): Int? {  // 반환값이 널일 수 있다
  //
}

val files = File("Test").listFiles()
println(files?.size) // files가 널이더라도 에러가 발생하지 않음, 코드 생략됨

?: 널인 경우 실행
val email=values["email"] ?: throw IllegalStateException("Email is missing!")
val mainEmail=emails.firstOrNull() ?: ""
val mapped=value?.let {transformValue(it)} ?: defaultValueIfValueIsNull

3. 문자열
var a = 1
val s1 = "a is $a" // php와 비슷한 문자열 내 변수 - String Interpolation

a=2
val s2 = "${s1.replace("is","was")} , but now is $a" // ${ } 를 통해 계산 식의 결과를 문자열에 할당: 한줄 코딩


4. Any 형식
자바의 Object 형식과 유사

is 형식이 일치하면 true

fun getStringLength(obj: Any): Int? {
  if (obj is String) {
    return obj.length;
  }
  return null
}

fun getStringLength(obj: Any):Int? {
  if (obj !is String) return null
  return obj.length
}

fun getStringLength(obj: Any): Int? {
  if (obj is String && obj.length > 0) {
    return obj.length
  }
  return null
}

5. 인스턴스
val rect = Rectangle(5,2) // new는 필요없음


덧글

댓글 입력 영역