코틀린에서는 리스트, 맵, 집합 자료구조를 지원한다.
array(배열)와 달리 크기가 정해져있지 않아 동적으로 값 추가 가능
1. 읽기 전용 (값을 수정할 수 없다.)
var scores1 = listOf(값1, 값2, 값3)
var scores2 = mutableListOf(값1, 값2, 값3)
scores2.set(인덱스, 값)
var scores3 = ArrayList<자료형>(값1, 값2, 값3)
scores3.set(인덱스, 값)
키와 값의 쌍으로 이루어진 자료형
1. 읽기 전용
var map1 = mapOf("kor" to 94, ...)
println(map1["kor"])
println(map1.to String())
var map2 = mutableMapOf("kor" to 94, ...)
map2["eng"] = 92
for((k,v) in map2){
println("%{k}번째 값 : ${v}")
}
집합은 순서가 없고 중복없는 자료형
1. 읽기 전용
- var set1 = setOf("닭", "참새", "비둘기")
하나의 메소드를 간결하게 표현할 수 있는 방법이다.
fun add(num1:Int, num2:Int, num3:Int) = (num1+num2+num3)/3
var add = {num1: Int, num2: Int, num3: Int -> (num1+num2+num3) / 3}
println("평균값은 ${add(10,20,30)}입니다")
보통 객체는 횟수 상관없이 막 만들 수 있다.
그러나 싱글턴은 메모리 전역에서 단 한개의 유일한 객체를 가진다.
코틀린에서 companion, object 키워드로 싱글턴 구현 가능
프로그램이 실행되는 시점에 인스턴스화 되어 있어서
객체를 만들어 주지 않아도 바로 사용할 수 있다.
객체 자원간 충돌을 방지할 수 있다.
객체를 무한하게 제작하면 입력 순서가 꼬일 수 있지만 싱글턴을 이용하면 그럴일이 없다.
정수 -> 실수
num1.toInt()
실수 -> 정수
num2.toDouble()
문자열 -> 정수
Integer.parseInt(num3)
문자열 -> 실수
num4.toDouble()
is 키워드 사용
if ( name is String)
println("name is String)
보통 메소드는 하나의 리턴값을 반환한다.
하지만 Pair를 사용하면 2개도 가능하다.
클래스 밖 외부에서 메소드를 정의해 쓸 수 있다.
기존의 틀을 변하지 않고 원하는 메소드를 외부에서 추가할 수 있다.