목록전체 글 (122)
기록
변수의 다양한 사용 방법에 대해 알아보자. 변수에 대한 몇가지 주의할 내용과 좀 더 다른 방법으로 사용하는 것을 알아보자. 1. 상수 val은 할당된 객체를 변경할 수 없을 뿐이지 객체 내부의 속성을 변경할 수 없는 것은 아니다. 절대 변경이 불가능한 것은 '상수'이다. 컴파일 시점에 결정되어 절대 바꿀 수 없는 값이다. 상수로 선언될 수 있는 값은 기본 자료형만 가능하며(String 클래스 포함) 런타임에 생성될 수 있는 일반적인 다른 클래스의 객체들은 담을 수 없다. 상수는 클래스의 속성이나 지역 변수 등으로는 사용할 수 없으며, 반드시 companion object 안에 선언하여 객체의 생성과 관계없이 클래스와 관계된 고정적인 값으로만 사용하게 된다. fun main() { val foodCourt..
지난 시간에 이어 좀 더 복잡한 기능의 컬렉션 함수를 알아보자. 1. associateBy 객체에서 key를 추출하여 map으로 만드는 함수 2. groupBy key가 같은 아이템끼리 배열로 묶어 map으로 만드는 함수 3. partition 아이템에 조건을 걸어 두개의 컬렉션으로 나누는 함수 두 객체를 담을 수 있는 Pair라는 클래스 객체로 반환된다. 각각의 컬렉션을 first, second로 참조하여 사용한다. 변수 이름을 괄호 안에 두개 선언해주면 각각의 변수 이름으로 Pair를 받을 수 있다. fun main() { data class Person(val name: String, val birthYear: Int) val personList = listOf(Person("유나", 1992), ..
컬렉션에 사용할 수 있는 유용한 함수들을 알아보자. 여태까지 컬렉션을 for문으로 반복하여 포함된 아이템을 하나하나 꺼내어 사용했었다. 코틀린은 함수형 언어의 특징을 갖고 있기 때문에 컬렉션 함수를 사용하여 좀 더 편리하게 컬렉션을 사용할 수 있다. 컬렉션 함수 : list나 set, map과 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용하여 for문 없이도 아이템을 순회하여 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러가지 함수를 지칭한다. fun main() { val nameList = listOf("박수영", "김지수", "김다현", "신유나", "김지우") //중괄호 안에서 컬렉션에 포함된 모든 아이템을 it 변수로 순서대로 참조한다. nameList.forEach{ p..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dpC3hf/btrBHqhaBx5/J08z6D9zkUBeX7sxKIGjz1/img.png)
코틀린이 지원하는 컬렉션 클래스인 Set과 Map을 알아보자. 1. Set List와 달리 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션이다. 따라서 인덱스로 위치를 지정하여 객체를 참조할 수는 없으며, contains로 객체가 set 안에 존재하는지 확인하는 식으로만 사용한다. Set 역시 MutableSet이 존재하여 객체의 추가, 삭제 가능 여부에 따라 사용한다. 요소의 추가 삭제 add(데이터) remove(데이터) 객체의 확인 contains(데이터) fun main() { val a = mutableSetOf("귤", "바나나", "키위") for(item in a) { println("${item}") } a.add("자몽") println(a) a.remove("바나나") printl..
특별한 기능이나 형태를 가진 클래스들을 알아보자. 1. Data Class Data class는 데이터를 다루는 데 최적화 된 클래스로 '5가지 기능'을 내부적으로 자동으로 생성한다. 1. 내용의 동일성을 판단하는 equals() 자동 구현 2. 객체의 내용에서 고유한 코드를 생성하는 hashcode() 자동 구현 3. 포함된 속성을 보기 쉽게 나타내는 toString() 자동 구현 4. 객체를 복사해 새 객체를 만드는 copy() 자동 구현 val a = Data("A", 7) //파라미터가 없으면 똑같은 내용 객체 생성 val b = a.copy() //생성자와 똑같은 형태의 파라미터를 넘겨 일부 속성 변경 val c = a.copy("C") 5. 속성을 순서대로 반환하는 component 함수 자동..
코틀린에서 지원하는 클래스 유형 중 클래스가 중첩되는 두 가지 유형을 알아보자. 기본적으로 클래스 안에 클래스를 하나 더 넣을 수 있는 중첩 클래스(Nested Class)를 지원한다. 중첩 클래스는 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식으로, 사용 할 때는 외부클래스.중첩클래스 형식으로 사용한다. 이때 중첩클래스 대신 내부 클래스(Inner Class)라는 것을 사용할 수도 있다. 중첩클래스에 inner 라는 키워드를 붙인 내부 클래스는 혼자서 객체를 만들 수는 없고 외부 클래스의 객체가 있어야만 생성과 사용이 가능한 클래스이다. 중첩클래스는 형태만 내부에 존재할 뿐 실질적으로는 서로 내용을 직접 공유할 수 없는 별개의 클래스이다. 내부클래스는 ..
함수를 더 다양한 방법으로 사용할 수 있는 여러 기능들을 알아보자. 코틀린에서도 대부분의 언어에서 지원하는 함수의 overloading이 지원된다. 이것은 '같은 스코프 안'에서 같은 이름의 함수를 여러개 만들 수 있는 기능이다. 이름이 같더라도 파라미터의 자료형이 다르거나, 파라미터의 개수가 다르면 서로 다른 함수로 동작할 수 있다. fun main() { read(7) read("감사합니다") } fun read(x: Int) { println("숫자 $x 입니다") } fun read(x: String) { print(x) } 함수 이름은 같지만 자료형을 구분하여 함수가 매칭되는 것을 볼 수 있다. 1. default arguments 파라미터를 받아야 하는 함수이지만 별다른 파라미터가 없더라도 기..
nullable 변수에서 null을 처리하는 법과 변수 간에 동일성을 확인하는 법을 알아보자. 1. Null 처리 연산자 코틀린에서 nullable 변수를 만들어 null 상태를 담을 수 있다. 하지만 null 상태로 속성이나 함수를 쓰려고 하면 *null pointer exception 이 발생하기 때문에 nullable 변수를 사용할 때에는 null check가 없이는 코드가 컴파일 되지 않는다. (* null인 객체를 참조하면 발생하는 오류) null체크를 위해 일일히 if문으로 조건을 체크하는 대신 더 편리한 방법을 제공한다. ?. (null safe operator) 참조연산자를 실행하기 전에, 먼저 객체가 null인지 확인하고 객체가 null이라면 뒤따라오는 구문을 실행하지 않는 연산자이다. ..
String 클래스와 관련한 여러 속성과 함수가 있다. 그 중 자주 쓰이는 것들을 알아보자. fun main() { val test1 = "Test.Kotlin.String" println(test1.length) println(test1.toLowerCase()) println(test1.toUpperCase()) //특정 문자열을 기준으로 문자열을 여러개로 나눠 배열에 담는다. val test2 = test1.split(".") println(test2) //문자열이 들어가 있는 배열을 다시 하나의 문자열로 합친다. println(test2.joinToString()) println(test2.joinToString("-")) print(test1.substring(5..10)) } fun main(..
데이터를 코드에서 지정한 순서대로 저장하는 List애 대해 알아보자. List는 데이터를 모아 관리하는 Collection class를 상속받는 서브 클래스(List, Set, Map) 중 가장 단순한 형태로, 여러개의 데이터를 원하는 순서로 넣어 관리하는 형태이다. 리스트에는 List와 MutableList 두 가지가 있다. List MutableList List는 생성시에 넣은 객체를 대체, 추가, 삭제 할 수 없으며 MutableList는 이것이 가능하다. (*mutable : 변할 수 있는) 따라서 상황에 맞춰 선택해 사용하면 된다. 리스트를 만들 때는 전용 함수인 listOf나 mutableListOf를 쓰고, 괄호 안에 리스트에 담을 데이터 요소를 나열한다. listOf(1,2,3) mutab..