Kotlin

    LinkedList란 무엇인가? 단일 연결 리스트, 양방향 연결 리스트 간단하게 구현해보기

    LinkedList란 무엇인가? LinkedList는 각 노드에서 단방향으로 포인터를 가진 단일 연결 리스트(Singly Linked List)와 양방향으로 포인터를 가진 양방향 연결 리스트(Doubly Linked List)로 나뉜다. 단일 연결 리스트 단일 연결 리스트(Singly Linked List)는 각 노드에서 다음 노드에 대한 참조를 가지고 있어 다음 노드로 이동할 수는 있지만 이전 노드로 이동할 수는 없는 리스트이다. 이 때문에 이전 노드와 다음 노드의 참조를 모두 가지는 Double Linked List에 비해 메모리 공간을 약간 덜 차지하는 장점이 있으며, 특정 노드 삭제를 위해 삭제할 노드의 이전 노드의 포인터를 다음 노드로 변경하면 되기 때문에 삭제가 매우 간단하다. 하지만 여러 단..

    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 이는 초기에 매우 효과적이었는데, 원시 타입을 사용할 수 있는 곳에 원시 타입을 사용해 코드를 만들면 메모리가 많이 절약될 수 있었기 때문이다. 하지만 이는 시간이 지날수록 비효율적이어진다. 같은 목적을..