반응형

Programming Language/Kotlin 18

[Kotlin] 코틀린 초기화 방법과 순서

안녕하세요 골드입니다. 오늘은 코틀린에 있는 여러 가지 초기화 방법에 대해서 설명을 해보려고 합니다. 어떤 방법이 있는지 그리고 이 방법들 중 어떤 것이 먼저 동작하는지 알아볼 것입니다. 1. 생성자 - 기본 생성자 클래스의 인스턴스를 생성할 때, 우리는 생성자를 사용합니다. 여러 생성자를 생성하여 인스턴스의 고윳값을 원하는 방식으로 설정할 수 있습니다. 코틀린의 기본 생성자는 이렇게 생겼습니다. 코딩을 하다보면 한 번쯤은 사용한 경험이 있는 익숙한 코드입니다. 함수의 인자를 선언하듯이 Test 클래스의 생성자를 정의할 수 있습니다. 이게 코틀린의 기본 생성자입니다. 정의한 클래스 생성자 매개변수를 그냥 사용할 수도 있고, 클래스 속성의 커스텀 게터와 세터를 정의해야 한다면 일대일 대응 관계로 정의한 후..

[Kotlin] lateinit과 lazy 차이점

목차 소개 lateinit lazy lateinit과 lazy의 차이점 초기화 시간 Nullable vs Non-nullable Compile-time vs Run-time error 스레드 안정성 결론 소개 Kotlin은 전역 변수를 선언하면 반드시 초기화 해줘야 한다. 전역 변수를 초기화하지 않고 선언할 수 있도록 도와주는 키워드가 lateinit과 lazy다. 먼저 Kotlin에 lateinit과 lazy가 있는 이유는 null 안정성 시스템 덕분이다. 속성을 nullable로 선언하면 사용할 때마다 ? 연산자나 !! 연산자를 사용해야 하기 때문에 번거로움이 있고 그렇지 않다면 반드시 초기화를 해줘야 한다. 초기화를 하지 못 하는 상황이 발생할 수도 있기 때문에 Kotlin 언어에서 이 둘을 지원한..

[Kotlin] Java의 void, Kotlin의 Unit, Nothing 차이점

안녕하세요 골드입니다. 이번 글은 키워드의 차이점에 대해서 정리한 글입니다. 그중 자바의 void와 코틀린의 Unit에 차이점을 살펴보고 추가로 Nothing에 대해서도 작성하도록 하겠습니다. 결론부터 이야기하면 코틀린의 Unit은 자바의 void와 비슷합니다. 1. void와 Void 먼저 자바의 void는 반환 타입이 없으므로 생략한다는 의미입니다. 흔히 자바로 메소드를 생성할 때 반환 타입이 없으면 void를 사용합니다. 매번 사용하는 main메소드도 void를 사용합니다. 반환 값이 존재하지 않기 때문입니다. 그리고 Void가 있습니다. void와 Void는 다릅니다. int와 Integer가 같지만 다르듯이 void와 Void도 이와 같습니다. 비유하자면 void는 기본형이고 Void는 참조형입..

[Kotlin] var, val 그리고 const val

안녕하세요 골드입니다. Kotlin이라는 언어를 사용한다면 너무나도 당연하게 쓰는 var과 val 키워드가 있습니다. 이번 글에서 이 둘의 차이점에 대해서 알아보고 비슷하지만 다른 val과 const val의 차이점에 대해서도 알아보도록 하겠습니다. 1. var var은 variable를 의미하며, Kotlin에서 변수를 선언할 때 쓰는 키워드입니다. 흔히 말하는 기본 자료형 혹은 객체 참조 모두 var 키워드를 사용한 변수에 할당할 수 있습니다. var 키워드로 선언된 변수는 값을 변경할 수 있습니다. 변수를 선언할 때, 타입을 같이 작성할 수도 있습니다. 다만, 선언하면서 초깃값을 지정하였다면 변수의 타입을 생략할 수 있도록 코틀린은 타입 추론(type inference) 기능이 있습니다. 2. va..

[Kotlin] Collections Map 사용법

안녕하세요 골드입니다. Kotlin의 Collections 중 Map에 대해서 글을 쓰도록 하겠습니다. Map은 다른 자료구조와 다르게 조금 특이하게 직접 정의한 Key와 Value를 쌍으로 데이터를 저장하는 방식입니다. List에서 index를 통해 value에 접근했다면 Map에서는 key를 통해 value에 접근할 수 있습니다. 하나의 Map 안에서 Key는 중복이 불가하지만, value는 중복이 가능합니다. 이제 구체적으로 알아보겠습니다. 1. Map 생성하기 먼저 Map을 하나 생성하겠습니다. 이해하기 쉽도록 메뉴라는 map 데이터를 생성하였습니다. 메뉴판은 Map을 설명하기 적절한 비유라는 생각이 듭니다. 보통 한 메뉴판에 같은 이름을 가진 메뉴는 없지만 같은 가격을 갖는 메뉴는 존재할 수 있..

[Kotlin] Collections Set 사용법 (List 중복제거)

안녕하세요 골드입니다. Kotlin의 Collections pacakage에서 Set 자료구조 사용에 대해서 글을 쓰도록 하겠습니다. Set은 자료구조 중에 한 종류입니다. Set을 사용하기 전에, Set의 가장 큰 특징은 요소의 중복이 허용되지 않는다는 점입니다. List는 같은 형식의 요소가 넘버링되어 저장되었습니다. 1을 add하고 또 1을 넣으면 0번째 데이터가 1이고 1번째 데이터가 1일 뿐이었지만, Set은 단 하나의 값만 저장됩니다. 1. Set 생성 Set을 생성하겠습니다. 다른 Collections와 마찬가지로 setOf()와 mutableSetOf()가 있습니다. 읽기 전용이냐 아니냐의 차이입니다. 먼저 setOf()를 사용해서 Set을 생성하겠습니다. setOf()로 생성한 모습입니다..

[Kotlin] Collections List 사용법

안녕하세요 골드입니다. 오늘은 코틀린의 컬렉션 중에서 List에 대해 글을 쓰도록 하겠습니다. 1. List의 기본 형태 먼저 List의 가장 기본적인 모습입니다. List는 순서가 있는 데이터의 집합입니다. listOf(1, 2, 3)이라고 선언했다면 1이 첫번째, 2가 두번째, 3이 세번째 요소가 됩니다. List는 listOf()함수를 사용하여 만들 수 있습니다. list2와 list3처럼 변수의 형태를 List라고 컴파일러에게 알려주고 사이에 리스트 요소의 타입을 알려줄 수 있습니다. 정해진 타입 이외에 값은 추가할 수 없으며, 추가했을 경우 에러가 나타나는 것을 볼 수 있습니다. Kotlin은 타입 추론이 있기 때문에 변수 선언과 동시에 초기화를 했을 경우, list1처럼 변수 타입에 대한 선언..

[Kotlin] 코틀린 데이터 타입 형변환

안녕하세요 골드입니다. 오늘은 코틀린에서 기본 자료형들(String도 포함하여)의 형변환에 대해서 알아보겠습니다. 1. 문자열(String)을 숫자 타입으로 형변환 문자열을 숫자 타입으로 형변환 하겠습니다. 흔히 사용하는 숫자 타입으로 Int, Long, Double 같은 데이터 타입이 있습니다. 코틀린은에서 형변환은 매우매우 간단합니다. toFloat toDouble toDoubleOrNull toInt toIntOrNull toLong 같은 함수들을 코틀린에서 제공합니다. 보시다시피 원하는 데이터 타입 앞에 to를 붙여서 사용하면 됩니다. String형 변수 str에 "100"을 저장하고 Int형 변수 number는 초기화를 하지 않았기 때문에 Int라고 알려주기만 했습니다. 이후에 str.toInt..