코틀린에서는 선언된 기본값을 보고 타입을 추론한다.
java 에서는 기본 타입간의 변환은 암시적으로 이루어질 수 있지만 kotlin에서는 기본 타입간의 변환은 명시적으로 이루어져야 한다.
예시를 보자면 ..
위의 java 코드는 int 타입의 값이 long 타입으로 암시적으로 변경되었습니다.
하지만 코틀린에선 가능하지 않습니다. 이를 해결하려면 어떻게 해야 할까요 ?
결론은 to변환타입()을 사용해야 합니다.
또한 변수가 nullable이라면 적절한 처리가 필요합니다.
예시를 보자면 ..
위의 number1은 null 이 들어올 수 있기 때문에 아래에서 바로 메소드콜을 할 수 없다. 따라서 safe call 과 elvis 연산자를 활용하여야 한다.
기본 타입이 아닌 일반 타입은 어떨까요?
위의 java 코드는 객체 obj 를 받아서 만약 Person이라면 형변환 후 나이를 출력해주는 코드 입니다. 이 코드를 kotlin으로 변환 해보겠습니다.
위의 코드처럼 변환 할 수 있습니다.
또한 as Person 구문은 생략될 수 있습니다. 코틀린 컴파일러가 if에서 타입체크를 한번 해줬기 때문에 해당 타입으로 간주될 수 있겠구나 하고 구문을 생략할 수 있는 스마트 캐스트가 존재합니다.
또한 is 의 부정문으로 '!' 기호를 사용할 수 있다.
그리고 만약 obj에 null이 들어올 수 있다면? as 키워드 뒤에 '?' 키워드를 사용하면 된다. 만약 null 이 들어왔다면 해당 구문 전체가 null이 될 것이다.
Java의 Object 역할. (모든 객체의 최상위 타입)
모든 Primitive Type의 최상의 타입도 Any이다.
Any 자체로는 null을 포함할 수 없어 null을 포함하고 싶다면,
Any?로 표현.
Any 에 equals / hashCode / toString 존재.
Unit은 Java의 void와 동일한 역할.
void와 다르게 Unit은 그 자체로 타입 인자로
사용 가능하다.
함수형 프로그래밍에서 Unit 은 단 하나의 인스턴스만 갖는 타입을
의미. 즉, 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현
Nothing은 함수가 정상적으로 끝나지 않았다는 사실을 표현하는
역할
무조건 예외를 반환하는 함수 / 무한 루프 함수 등
string 구문 편집 은 아래와 같이 변수사용을 한다.
또한 중괄호를 생략하면서 사용할 수 있는 방법도 존재함. (객체 속성까지는 접근불가)
""" 3개 키워드를 이용하여 자유로운 줄바꿈 등 문자 구문을 사용할 수 있음.
또한 자바에서 특정 문자를 가져올 때 아래와 같은 코드를 사용했다.
코틀린에선 아래와 같이 사용한다.
다음 포스팅에선 연산자에 대해 공부하며 포스팅 해보겠습니다.