Kotlin

    Kotlin, Java가 String의 인코딩 방식으로 유니코드 UTF-16을 선택한 이유와 장점

    Kotlin과 Java의 Char 저장 방식 Kotlin과 Java는 UTF-16으로 인코딩 되어 저장된다. 아래는 Kotlin Char 클래스의 주석이다. 아래 주석에서 보면 Char은 16-bit 유니코드 문자를 표현한다고 되어 있다. /** * Represents a 16-bit Unicode character. * * On the JVM, non-nullable values of this type are represented as values of the primitive type `char`. */ public class Char private constructor() : Comparable { Kotlin과 Java는 왜 UTF-16을 문자열 인코딩 방식으로 택했을까? 바로 JVM이 내부적으로..

    [Kotlin] CharArray 사용 방법과 내부 구성 한 번에 정리하기 : CharArray 생성 방식, String과의 관계와 인코딩 방식

    CharArray란? CharArray는 원시 타입 Char으로 이루어진 배열을 나타낸다. /** * ... * On the JVM, non-nullable values of this type are represented as values of the primitive type `char`. */ public class Char private constructor() : Comparable Char 클래스의 주석에 따르면 Kotlin은 non-nullable한 Char을 JVM상에서 Java의 원시 타입인 char과 똑같이 저장한다. 이러한 non-nullable한 Char 값들의 집합을 원시 타입을 유지하면서 배열로 만든 것이 바로 CharArray이다. CharArray는 언뜻 보면 Array과 비..

    [Kotlin] BooleanArray 사용 방법 한 번에 정리하기 : BooleanArray 사용해 메모리 효율적으로 사용하기

    BooleanArray란? Kotlin의 BooleanArray는 원시 타입(Primitive Type) Boolean으로 이루어진 배열을 나타낸다. Kotlin은 non-nullable한 Boolean을 JVM상에서 Java의 원시 타입인 boolean과 똑같이 저장한다. 이러한 non-nullable한 Boolean 값들의 집합을 원시 타입을 유지하면서 배열로 만든 것이 바로 BooleanArray이다. 이 BooleanArray는 언뜻 보면 Array과 비슷해 보이지만, Array클래스는 객체만을 이낮로 받으므로 Array 속에 들어가는 Boolean은 Primitive Type이 아닌 한번 클래스로 감싸진 Boxed Type의 Boolean이다. 즉, 원시타입 BooleanArray는 Array에..

    Kotlin과 Java의 Primitive Type 다루는 방법 차이 알아보기

    Java의 Primitive Type, Boxed Type과 한계 Java에서는 Primitive Type(원시 타입)과 Boxed Type(박스형 타입)의 변수를 구분해 코드를 작성하였다. Boxed Type은 Class로 원시 타입을 감싸는 형태로 만들어졌다. Java Primitive Type Java Boxed Type byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 이는 초기에 매우 효과적이었는데, 원시 타입을 사용할 수 있는 곳에 원시 타입을 사용해 코드를 만들면 메모리가 많이 절약될 수 있었기 때문이다. 하지만 이는 시간이 지날수록 비효율적이어진다. 같은 목적을..

    Kotlin object의 초기화 시점과 companion object의 초기화 시점 차이 알아보기

    object와 companion object의 초기화 시점 object는 싱글톤 인스턴스를 간편하게 만들기 위해 Kotlin에서 제공해주는 방법이다. object를 작성하면 싱글톤 패턴을 구현하기 위한 긴 코드를 작성할 필요 없이 쉽게 싱글턴 객체를 만들 수 있다. companion object 또한 클래스에 종속된 정적인(static) 값들을 만드는데 사용되며 여러번 생성되는 것이 아닌 한 번만 생성되는 싱글턴 패턴을 가진다. 하지만 Kotlin에서 object와 companion object는 서로 다른 초기화 시점을 갖는다. 이번 글에서는 각각의 초기화 시점에 대해 알아보려고 한다. object의 초기화 시점 object는 실제로 사용 될 때까지 초기화가 지연된다. 이에 대한 것은 공식 문서에 다음..