Skip to content

Latest commit

 

History

History
70 lines (44 loc) · 2.22 KB

1회차.md

File metadata and controls

70 lines (44 loc) · 2.22 KB

코틀린에 대한 이해

  • 독릭된 언어로 여러 프랫폼으로 번역되는 가운데서도 고유의 철학을 유지
  • 현재는 JVM 만 100프로 호환

언어 시스템 형

자바를 비롯해 포인터를 직접 쓰지 않는 언어 대부분의 형 분류

  • 원시형

    • 대입이나 함수 인자 전달 또는 반환 시 복사됨
    • 언어에 따라 스택메모리에 잡아서 속도가 빠름 (왜 힙은 상대적으로 느린가 ??)
  • 참조형

    • 대입 등에서 참조만 복사됨
    • 대부분의 언어에서 힙이라 불리는 영역을 사용

원시형과 참조형의 다양한 차이로 인해 boxing, unboxing 이 발새아고 레퍼타입이 존재함


코틀린의 기본형

코틀린은 원시형의 개념을 사용하지 않고 기본형을 정의함

-> basic type: number, Boolean, character, string, array

코드에서는 무조건 래퍼형으로 표현하고 컴파일러가 컨텍스트와 플랫폼에 따라 래퍼형 또는 원시형 중 유리한 것으로 변환함


코틀린에서는 복사냐 레퍼런스냐의 문제보다 불변성 을 갖는 형이냐 아니냐가 중요함

객체가 불변인데 레퍼타입인지 원시타입인지 중요한가 ?? 어차피 변경이 안되기 때문에

-> 플랫폼별 별 가장 효율적인 번역은 코틀린이 알아서 한다.


단 제네릭 배열과 원시형 배열을 분리하여 호환시키기 위해 원시형 배열을 별도로 제공

-> IntArray, LongArray 등


코틀린 내장형 (built - in)

Any

모든 것의 부모

Nothing

  • 모든 것의 자식 (모든 Type 에 대입이 가능함)
  • 제어 흐름의 종결문을 표현함

Unit

  • 없음을 나타내는 형이자 싱글톤 객체

Throwable

  • 모든 예외들의 부모
  • 코틀린에서는 CheckedException 을 다 없앴다. 모두다 RuntimeException 으로 변경

Function

  • 함수를 나타내는 형
  • 자바에서 선언한 람다는 모두 인터페이스의 익명 객체이다.
  • 코틀린은 함수가 일급객체임

KClass, KCallable, KProperty, KFunction, KType - ReflectionType

  • Kotlin 은 Self Description 이 가능한 언어, Reflection 의 도움을 받지 않아도 언어자체에서 지원한다.