1. 기본 타입

Int, Long, Float, Double 등등..

선언된 기본값을 보고 타입을 추론한다.

암시적 타입 변경 불가. 명시적으로만 가능하다.

val number1 = 4
val number2: Long = number1 // 컴파일 에러!
val number1 = 4
val number2: Long = number1.**toLong**() // to변환타입() 을 사용해야한다.
  1. 타입 캐스팅

java는 클래스도 형변환을 명시해야하는데

(Person) 처럼

kotlin은 스마트 캐스트를 한다.

isas 를 활용한다.

is는 java의 instanceof와 같다.

as는 객체의 형식을 어떤것으로 간주하는지 정한다.

java 코드를 kotlin으로 변환하는 예시를 보자.

void printAgeIfPerson(Object obj) {
	if(obj instanceof Person) {
		Person person = (Person) obj;
		System.out.println(person.getAge());
	}
}
fun printAgeIfperson(obj: Any?) { // Any는 뒤에서 설명
	if(obj is? Person) { // is
		println(person?.age)
	}
}

fun printAgeIfperson(obj: Any?) {
	val person = obj as? Person //as
	println(person?.age) // safe call
}

====
printAgeIfperson(null)
null