목록Language/Kotlin (20)
Coding Memo
map 은 key에 대한 value를 1:1로 가지고 있는 집합이다. 맵에 key를 검색하면 value가 나온다. interface Map interface MutableMap : Map K는 키이고, V는 value이다. key와 value 값을 바로 줄 때는 'to'를 이용한다. (key to value) ex) var m: MutableMap = mutableMapOf("Korea" to "Seoul") put abstract fun put(key: K, value: V): V? map에 key와 value를 가진 아이템을 추가한다. 주의: list와 set은 add 였지만 map은 put이다! 참고: 위 함수는 map[key] = value와 같은 기능을 가진다. remove abstract fu..
Collections의 하위 클래스 중 하나로 Set이 있다. 집합으로 생각하면 편하다. 순서가 없는 데이터들의 집합. 중복을 허용하지 않는 데이터 공간이다. List와 마찬가지로 2가지가 있다. interface Set : Collection interface MutableSet : Set, MutableCollection mutableSet은 내용 변경이 가능하다. add abstract fun add(element: E): Boolean 아이템 E를 추가한다. addAll abstaract fun addAll(elements: Collection): Boolean Collecions E를 모두 set에 추가한다. clear abstract fun clear() 모든 아이템을 삭제한다. remove ..
Java와 마찬가지로 Collections 클래스에 List, Map, Set이 있다. 이 중 List는 순서가 있는 집합이다. 배열하고 리스트의 차이점을 간단하게 정리하면 Array List 연속적인 메모리 공간 불연속적인 메모리 공간 공간의 크기가 정해져있음 공간의 크기가 유동적임 (동적할당) 연속적인 메모리 공간에 대한 index 전의 데이터가 그 다음의 데이터를 포인터로 가리키고 있음 아래 함수들의 예시는 글 맨 아래에 한 번에 해놓았다. List Collection의 하위 클래스 중 하나이다. 각 데이터를 배열 처럼 index로 접근할 수 있다. interface List : Collection interface MutableList : List, MutableCollection 종류 List ..
Java에는 없는 좀 특이한 클래스를 제공한다. 데이터만을 가지고 있는 클래스를 data class로 만들 수 있다. 아래 링크는 공식문서이다. https://kotlinlang.org/docs/reference/data-classes.html Data Classes - Kotlin Programming Language kotlinlang.org Data Class 데이터클래스는 다음과 같은 조건을 충족해야 한다. 기본 생성자는 적어도 하나의 파라미터를 가져야 한다. 모든 기본 생성자의 파라미터는 val이나 var으로만 선언되어야 한다. abstract, open, sealed or inner가 될 수 없다. 데이터 클래스를 5가지 기능으로 나누어본다면 다음과 같다. equals() hashcode() ..
Java에도 열거형이 있듯이 Kotlin에도 있다. 서로 연관이 있는 상수값들을 모아놓은 집합이라고 생각해도 될 것 같다. (물론 이 집합을 타입처럼 사용한다.) 상수 값을 열거할 때 이용하며, 상수 값이므로 보통 대문자로 나타낸다. enum class 상수값은 물론, 함수도 가지고 있을 수 있다. 인자가 없는 간단한 예시이다. fun main() { var c: UserColor = UserColor.RED println(c) if (c.isRed()) { println("c is Red") } } enum class UserColor { RED, GREEN, BLUE; fun isRed(): Boolean = this == UserColor.RED } 인자를 포함하여 생성할 수 있다. fun main..
코틀린은 Java와 100% 호환되는 언어이므로 클래스 안에 클래스가 있는 형태가 가능하다. 마찬가지로 중첩 클래스와 내부 클래스가 있다. 중첩 클래스 (Nested Class) 중첩 클래스는 그 클래스를 포함하고 있는 외부 클래스의 변수나 함수를 공유할 수 없다. 즉, 외부 클래스 안에 있는 중첩 클래스지만 실제적으로는 다른 클래스로 봐도 될 것 같다. 다만 사용은 (외부 클래스 명).(중첩 클래스 명)으로 외부 클래스를 참조하여 사용한다. 형식은 단순히 클래스 안에 다시 클래스를 선언하는 형식이다. fun main() { OuterClass().printOuter() println(OuterClass().a) OuterClass.NestedClass().printNested() println(Oute..
Kotlin 함수 파라미터에 관련한(?) 특징들이다. Overloading 코틀린도 오버 로딩 기능이 있다! 인자의 개수나 타입이 다르면 가능하다. 간단하게 예시만 보자. fun main() { printNumber(1) printNumber(3, 2) } fun printNumber(n: Number) { println(n) } fun printNumber(n: Number, loop: Int) { var i: Int = 0 while(loop > i) { println(n) i++ } } Default Arguments 함수를 호출 할 때 해당 값을 인자로 주지 않아도 default arguments로 돼 있으면 그 값으로 함수를 실행한다. (파이썬을 잠깐 볼 때 파이썬에도 이런 기능이 있었다.) f..
Kotlin은 null safe 한 언어이다. (null 값이 있으면 컴파일이 되지 않는다.) null값을 이용해야 할 때도 있다. 앞서서 변수타입에 '?'를 붙여서 null 값을 줄 수 있다는 것을 알았다. var a: String? = null var b: Int? = null 이를 이용할 경우 null 값인지 확인해야 한다. null값을 그대로 참조하려고 할 경우 컴파일이 되지 않는다. 그 방법에는 3가지가 있다. (온점(.)에 유의하도록 하자. 온점은 참조 연산자이다!) ?. Null safe operator 참조연산자(.) 실행 전에 해당 값이 null 이면, 참조연산자 후의 구문(함수)를 실행하지 않는다. ?: Elvis operator 해당 값이 null이 아니라면 뒤의 함수를 실행하고, n..