배우고 생각하지 않으면 잊어버리고,
생각만 하고 배우지 않으면 위태로워진다.
코틀린 프로그래밍
Kotlin/JVM
Kotlin/JS
Kotlin/Native
프로젝트 > 모듈 > 패키지 > 파일
val : 읽기 전용
var : 일반 변수
val username : String = "Lee" val username = "Lee"
var username (X) var username : String (O)
크기 : 8 / 4/ 2/ 1 Byte
Long, Int, Short, Byte (부호 O)
ULong, UInt, UShort, UByte (부호 X)
val point0 = 3.14E-2 => 0.0314 val point1 = 3.14e2 => 314
문자열안에 큰따옴표와 $기호
val str0 = "\"hello\"" var str1 = "${'"'}hello"${'"'}"
실행 결과 : "hello"
형식화된 다중 문자열
val formattedString """ 가나다라 마바사 """ println(formattedString)
실행 결과 : 가나다라 마바사
null 허용
var str1 : String = "Hello" var str2 : String? = Hello" str1 = null (=Error) str2 = null (=OK)
세이프 콜(?) + 엘비스 연산자(?:)
println("length: ${str1?.length ?: -1}")
if(str1 != null) str1.length else -1
자료형 변환 메서드
.toByte() .toLong() .toShort() .toInt() .toFloat() .toDouble() .toChar()
비교
val a: Int = 128 val b: Int = 128 println(a == b) //true println(a === b) //false
== : 값 비교
=== : 참조 주소 비교
스마트 캐스트
var x:Int = 1 var y:Any = x as Int //as에 의한 스마트 캐스트 var z:Any = 1 //Int형 z = 1L //Long형으로 묵시적 변환
비트 연산
4.shl(bits) : 4 표현 비트, 왼쪽으로 4개 이동(0으로 채움)
7.shr(bits) : 7 표현 비트, 오른쪽으로 4개 이동(0으로 채움)
12.ushl(bits) : 비트 이동 -> 부호 없음
12.ushr(bits) : 비트 이동 -> 부호 없음
9.and(bits) : bits와 9, 논리곱 연산
4.or(bits) : bits와 4, 논리합 연산
24.xor(bits) : bits와 24, 배타 연산
78.inv() : 78 표현 비트, 모드 뒤집음
함수와 함수형 프로그래밍
프로그램의 흐름제어
클래스와 객체
프로퍼티와 초기화
1) 프로퍼티의 접근
getter(), setter()
2) 지연 초기화
사용할지 모르는 데이터를 미리 초기화할 필요가 없어서 성능 향상에 도움
lateinit
class Person { lateinit var name : String fun test() { if(!::name.isInitialized){ println("not initialized") }else{ println("initialized") } } }
fun main(){ var person = Person() person.test() person.name = "Lee" person.test() }
실행 결과 : not initialized initialized
lazy
3) 위임
4) 정적 변수와 컴패니언 객체
다양한 클래스와 인터페이스
제네릭과 배열
컬렉션
표준 함수와 파일 입출력
코루틴과 동시성 프로그래밍
코루틴 : 코드의 복잡성을 줄이고도 손쉽게 일시 중단하거나 다시 시작하는 루틴 생성
- 협력형 멀티 태스킹
- 동시성 프로그래밍 지원
- 비동기 처리를 쉽게 도와줌
안드로이드 앱 개발과 코틀린
코틀린 안드로이드 확장
Anko 확장 활용