Kotlin

이영근·2020년 11월 1일
0

배우고 생각하지 않으면 잊어버리고,
생각만 하고 배우지 않으면 위태로워진다.

코틀린 프로그래밍

  • 시작

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) 정적 변수와 컴패니언 객체

  • 다양한 클래스와 인터페이스

  • 제네릭과 배열

  • 컬렉션

  • 표준 함수와 파일 입출력

  • 코루틴과 동시성 프로그래밍

코루틴 : 코드의 복잡성을 줄이고도 손쉽게 일시 중단하거나 다시 시작하는 루틴 생성

  1. 협력형 멀티 태스킹
  2. 동시성 프로그래밍 지원
  3. 비동기 처리를 쉽게 도와줌

https://wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0/



  • 안드로이드 앱 개발과 코틀린

  • 코틀린 안드로이드 확장

  • Anko 확장 활용

profile
개발자

0개의 댓글