본문 바로가기

Kotlin

(42)
공식 문서로 배우는 코틀린 - 10. Types - Type checks and casts 열 번째, 타입 검사와 캐스트입니다. 코틀린에서는 특정 객체의 타입을 확인하기 위해 타입 검사를 할 수 있습니다. 타입 캐스트는 객체를 특정한 타입으로 변환하는 것을 말합니다. 특별히 제네릭의 타입 검사와 캐스트를 공부하고 싶은 경우에는 제네릭 타입 검사와 캐스트를 보시면 됩니다. is 와 !is 연산자 특정 객체가 특정 타입인지 아닌지 식별하는 검사를 실행 시간에 수행할 때는 is 나 그 부정형인 !is 연산자를 사용합니다. if (obj is String) { print(obj.length) } if (obj !is String) { // !(obj is String) 과 같습니다. print("Not a String") } else { print(obj.length) } 스마트 캐스트 코틀린 컴파일..
공식 문서로 배우는 코틀린 - 9. Basic Types - Arrays 아홉 번째, 배열입니다. 배열은 같은 타입(해당 타입의 하위 타입도 가능)의 값들을 고정 수로 가지고 있는 자료 구조입니다. Kotlin에서 가장 일반적인 배열 형태는 Array 클래스로 나타내는 객체 타입 배열입니다. 객체 타입 배열에서 원시타입을 사용하는 경우 원시 타입은 상응하는 래퍼 클래스로 변경(box)되기 때문에 성능이 저하되는 문제가 있습니다. 이러한 오버헤드를 피하기 위해서는, (아래에 나오는) 원시 타입 배열을 사용합니다. 배열을 사용하는 경우 (When to use arrays) 코틀린에서 배열은 특별한 하위 수준(low level)의 요구 사항을 만났을 때 사용합니다. 예를 들어, 일반적인 애플리케이션에게 요구되는 것 이상의 성능이 요구된다거나, 맞춤화된 자료 구조를 만들어야 할 때 ..
공식 문서로 배우는 코틀린 - 8. Basic Types - Strings 여덟 번째, 문자열입니다. Kotlin에서 문자열은 String 타입으로 표현합니다. JVM에서 UTF-16으로 인코딩된 문자열을 담고 있는 String 객체는 글자당 대략 2 바이트를 사용합니다. 일반적으로 문자열은 큰따옴표로 묶은 (0개 이상의) 문자의 연속체입니다. val str = "abcd 123" 문자열의 요소들은 인덱스 연산자로 s[i] 식으로 접근할 수 있는 문자들입니다. 이 문자들은 다음과 같이 for 반복문으로 열거할 수 있습니다. fun main() { val str = "abcd" for (c in str) { println(c) } } /* 결과 a b c d */ 문자열은 불변입니다. 문자열을 한 번 초기화하면 값을 변경하거나 새로운 값을 할당할 수 없습니다. 문자열을 변경화는 ..
공식 문서로 배우는 Kotlin - 7. Basic Types - Characters 일곱 번째, 문자입니다. 문자는 Char 타입으로 나타냅니다. 문자 타입은 말 그대로 하나의 문자를 나타내며, 문자 리터럴은 '1' 같이 작은 따옴표로 묶습니다. JVM에서 문자는 16비트 유니코드로 표현되는 char 원시 타입에 저장됩니다. 특수 문자는 이스케이프 시키는 역슬래시로 시작합니다. 다음과 같은 특수 문자를 위한 이스케이스 시퀀스를 지원합니다. \t - 탭 \b - 백스페이스 \n - 새로운 줄(new line. LF) \r - 캐리지 리턴 (CR) \' - 작은 따옴표 \" - 큰 따옴표 \\ - 역슬래시 \$ - 달러 기호 이 외에 다른 문자를 인코딩하기 위해서는, ' \uFF00' 같은 유니코드 이스케이스 시퀀스 형태를 사용합니다. fun main() { val aChar: Char =..
공식 문서로 배우는 Kotlin - 6. Basic Types - Booleans 여섯 번째, 이러한 동작은 효율성을 위해 어떻게 보면 당연한 얘기이고 많은 프로그래밍 언어들이 이렇게 동작합니다만, Kotlin이 이렇게 동작한다는 것을 꼭 기억해 둬야 합니다. 프로그래밍 언어를 이해할 때 정확한 동작 방식을 이해하고 있어야 코딩할 때 정확하고 효율적인 코드를 작성할 수 있습니다. JVM에서 널 가능한 Boolean은 숫자 타입들과 마찬가지로 래퍼 클래스(java.lang.Boolean) 객체로 박스화(box)됩니다. 타입입니다. Boolean 타입은 true와 false 둘 중 하나의 진리값을 갖는 객체를 나타냅니다. 널 가능한 형태는 Boolean? 입니다. JVM에서 Boolean 타입은 전형적으로 8bit를 사용하는 boolean 원시 타입에 저장됩니다. 불리언 타입에 대한 내장..
공식 문서로 배우는 Kotlin - 5. Basic Types - Unsigned integer types 다섯 번째, 부호 없는 정수 타입입니다. 정수 타입에 더하여, Kotlin은 부호 없는 정수를 위한 타입을 다음과 같이 제공합니다. 타입 사이즈(bits) 최솟값 최댓값 UByte 8 0 255 UShort 16 0 65,535 UInt 32 0 4,294,967,295 (2^32 - 1) ULong 64 0 18,446,744,073,709,551,615 (2^64 - 1) 부호 없는 정수 타입들은 그에 대응하는 부호 있는 타입들이 제공하는 연산들 대부분을 지원합니다. 부호 없는 정수 타입은 해당 타입에 대응하는 같은 길이의 부호 있는 타입을 단일 저장 프로퍼티로 갖는 인라인 클래스로 구현됩니다. 부호 없는 타입과 부호 있는 타입 상호 간에 변환해야 한다면, (두 타입은 서로 다르므로) 모든 함수 호출..
공식 문서로 배우는 Kotlin - 4. Basic Types - Numbers 네번째는 Concepts 부분으로 넘어와서 기본 타입 - 숫자입니다. Kotlin에서는 어떤 변수든 멤버 함수와 프로퍼티를 호출할 수 있다는 면에서 모든 것이 객체입니다. 특정 타입들은 실행시에 내부적으로 원시 타입(숫자, 문자, 불리언 등)으로 최적화 되기는 하지만, 외형이난 사용면에서는 일반적인 클래스와 같습니다. 자연스러운 개념일 수도 있으나 언어 차원에서 원시 타입이 없이 모든 것을 객체로 본다는 개념은 기억하는 것이 좋습니다. 이 개념을 기본적으로 염두에 두고 있으면 추후 동반 객체 등을 이해할 때 도움이 됩니다. 꼭, 기억해 두시기 바랍니다. 타입(type) vs 형(形) 타입과 형(形) 모두 같은 말이지만, OOP에서 객체의 유형을 얘기할 때 보통 형보다는 타입이라는 말을 많이 쓰고, Kot..
공식 문서로 배우는 Kotlin - 3. Basics - Coding conventions 세번째, 코딩 규칙입니다. 프로그래밍을 할 때 일관되고 쉬운 코딩 규칙을 따르는 것은 여러모로 중요합니다. 예전에는 같이 협업하는 개발자들끼리 서로 상의하여 정해 놓고 쓰기도 했지만, (대표적으로 Python의 PEP-8처럼) 요즘 언어들은 코딩 규칙을 공식 문서에서 제공하기 때문에 비교적 쉽게 공통적인 코딩 규칙을 따를 수 있습니다. 코딩 규칙을 따르게 되면 일관된 규칙으로 가독성을 높이고 인적 실수를 줄일 수 있기 때문에 특정 언어를 처음 배우는 경우라면 반드시 코딩 규칙을 (적어도 한 번 이상) 읽어 보는 것이 좋습니다. 소스 코드 구성(organization) 디렉토리 구조 순수한 Kotlin 프로젝트에서 권고되는 디렉토리 구조는 공통 루트 패키지를 생략한 패키지 구조를 따르는 것입니다. 예를 들..