[Kotlin] 변수와 자료형, 연산자
작년 3월부터 SOPT에서 처음으로 코틀린을 접하고 그이후로 쭉 써왔다.
코틀린을 정석대로 공부하지 않고 주먹구구식으로 안드로이드에 적용하다보니 잘 모르고 쓴게 많아서 개념을 확실하게 잡자! 라는 마음으로 부스트코스-코틀린강의를 들으면서 정리해봤다.
val(value) - 불변형
var(variable) - 가변형
선언키워드 변수이름 : 자료형 = 값
문자열 내에 변수나 식을 ${변수 혹은 식} 으로 사용할 수 있음
var a = 1
val str2 = " a = ${a+2}"
println(str2)
컴파일러가 값에 따라 데이터형을 추론해 선언함 → 값을 명시해놓으면 :자료형 안써도 알아서 처리
- 일반 변수, 함수명
camelCase → 소문자 먼저오고 대문자 그 다음
- 클래스, 인터페이스
CarEngine → 대문자로 시작
-
기본형
가공되지 않은 순수한 자료형, 프로그래밍 언어에 내장
int, long, float, double ⇒ 코틀린에서는 사용하지 않음 , 자바에서는 사용
스택에 저장됨
-
참조형
동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형
Int, Long, Float, Double
힙에 저장됨
😃 16진수 0x0F ⇒ 0F ⇒ 0000 1111
-
문자열
String으로 선언되며 String Pool이라는 공간에 구성
==는 값만 비교, === 는 참조까지 비교 (java의 equals랑 똑같은듯)
-
Null 처리
코틀린의 변수 선언은 기본적으로 null을 허용하지 않음(기본 Not Null)
- ?
:null이 가능한 선언
//null 가능성 검사를 해주는것이 좋다 val a: Int? = null val b: String? = null //=> 사용할 수 없는 null인 변수에 접근하면서 NPE(NullPointerException)이 발생할 수 있기 때문에
?가 붙어있는 형식에는 세이프콜(?.)이나 널이 아니라는것을 단정해주는(!!.)가 허용됨 , null이라면 뒷부분이 실행되지 않음 (=null이 아닌 경우만 실행 !)
- !! non-null 단정기호
:null이 아니라고 단정해서 컴파일러가 오류를 무시함 → 널이라면 NPE가 발생하니까 주의 ! , 안쓰는것이 좋다
val b: String? = null println(${b?.length}) //println(${b!!.length} 웬만하면 null오류 날 수 있으니 쓰지 말자
null인지 if문으로 처리해주기
val b : String? = null val length = if(b!=null) b.length else -1 println(length)
세이프 콜과 엘비스 연산자를 사용한 null허용
val b : String? = null val length = b?.length ?: -1 println(length)
-
- is
-
특정 자료형인지 확인
val num = 10 if(num is Int){ println(num) }else{ println(num+1) }
-
- Any
-
자료형이 정해지지 않은 경우
언제든 필요한 자료형으로 자동변환(스마트캐스트) 가능
Any(root) - Number - Int ,Long 이런식으로 계층구조가 되어있음
var a : Any = 1 a = 20L println("a: $a")
fun check(x: Any){ if(x is String){ ... } if( x is Int){ ... } }
Comments