var number: Long = 1L // Long number = 1L;
val number: Long = 1L // final Long number = 1L;
Tip !
모든 변수는 일단 val 로 만들고 꼭 필요한 경운 var로 변경한다.
코틀린에서는 알아서 long(primitive type) 또는 Long (reference type)를 자동으로 알아서 판단하에 적용해준다. 이 말은 즉, 프로그래머가 boxing unboxing 고려할필요없다.
reference type [예) Long, Integer, .. DOUBLE ] 은 null 이 허용된다.
? 를 넣어준다.
val number: Long? = 1L
객체 인스턴스 할 때는 new 를 쓰지 않는다.
fun startsWithA(str: String): Boolean{
return str.startsWith("A");
}
null 이 아니면 그냥 실행하고, 널이면 전체가 널
val str:String? = "ABC"
// println(str.length)-- error
println(str?.length) //-- str 이 null이면 전체가 null
앞의 연산 결과가 null 이면 뒤의 값을 사용
val str: String? = null
str?.length ?: 0; //-- 0
예제
fun calculate(number: Long?): Long {
number ?: return 0;
}
fun notNull(str:String?): Boolean{
return str!!.startsWith("A") //-- 절대 str 이 null이 아닐때 쓰임 만약 널이 들어오면 NPE
코틀린에서 Java 코드를 가져다 사용할 때 어떻게 처리될까?
val person = Person("공부하는 개발자")
fun startWithA(str: String): Boolean{
return str.startsWhith("A")
}
public class Person{
private final String name;
@NotNull // @Nullable 일때는 에러
public String getName(){
return name;
}
}