728x90
"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다.
버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다.
기본 문법
일반
- 세미콜론으로 끝내지 않는다. 기본 스타일이고, 권장 스타일이니 이를 따르자.
- 타입 추론을 하며, 강타입 언어다.
주석
- 자바랑 기본적으로 동일함
- 단, 자바와 다르게 코틀린은 multiline 주석을 내포할 수 있음
변수 정의
val
불변var
가변- 자바와 다르게 코틀린은 대입문 연쇄(
a = b = c
)를 사용할 수 없다.- 값을 돌려주지 않는다.
- 복합 대입 연산에도 해당한다.
- 모든 코틀린의 타입은 근본적으로 클래스 정의를 기반으로 만들어진다.
a = 'a'
인 변수의a + 5
대해서,- 자바 : 결과를 암시적으로 정수로 변환 ASCII
- 코틀린 :
f
로 변환됨. 모든 연산이 이런 식이로 차 연산만 해당하지 않음
- 코틀린에서는 범위가 큰 타입인 변수에 작은 타입의 변수를 대입 불가능하다.
val n = 100 // Int
val l: Long = n // Error!
- Boolean의 eager, lazy 방식
- eager 방식은 이름 붙은 중위 연산자와 동등한 우선 순위
- eager 가 lazy 보다 더 높은 우선순위를 가짐
// or, and, xor : eager
// ||, && : lazy
// 아래 두 예제는, x == 1에서 오른쪽 연산은 0으로 나누는 연산이 되어, 반드시 lazy 연산 필요
x == 1 || y / (x-1) != 1
x != 1 && y / (x-1) != 1
- 문자열 템플릿
- 문자열 중간에
${}
형태로 값을 넣을 수 있음 - 변수인 경우 중괄호 생략하고 바로 변수명으로 적용 가능
- 문자열 중간에
val name = raedLine()
println("Hello $name!\n Today is ${Date()}")
- 문자열 비교 연산
==
은equals()
와 동일한 것- 참조 체크는
===
,!==
사용
배열
val a = emptyArray<String>()
val b = arrayOf("a", "b")
val c = readLine()!!.toInt()
val d = IntArray(10) { (it+1)*(it+1) } // it는 인덱스를 표현하는 변수이며, 자동 선언되는 변수임
- ByteArray, ShortArray, IntArray, LongArray, FloatArray … 등등의 원시 타입 배열 선언 가능
Array<Int>
는 모든 타입을 박싱하는 것charArrayOf()
CharArray()
형태로 사용
- 코틀린에서는 배열 원소를 명시적으로 초기화해야 함
- 자바에서는 상위 타입 배열에 하위 타입의 배열 대입이 가능하지만, 코틀린은 불가
// Java
Object[] objects = new String[] { "a", "b", "c" };
objects[0] = new Object(); // ArrayStoreException
// Kotlin
val strings = arrayOf("a", "b", "c")
val objects: Array<Any> = strings // exception
- 배열의
==
,!=
은 참조 비교, 원소 비교는contentEquals()
사용
Reference
코틀린 완벽 가이드
728x90
'Programming Language > Kotlin' 카테고리의 다른 글
코틀린 기초 - 클래스 기초 (0) | 2024.03.24 |
---|