Kotlin #1 : kotlin의 특징

ByWindow·2022년 5월 8일
0

Kotlin

목록 보기
1/6
post-thumbnail
💡 본 정리내용과 예시 코드는 "커니의 코틀린"(김태호)과 Android-sunflower를 참고했습니다.

Kotlin ?


탄생과 발전

  • Kotlin은 JetBrains에서 만든 언어로, 2011년 최초 공개된 후 2016년 정식 버전이 출시됨.
  • 간결한 문법과 풍부한 기능, 높은 안전성을 토대로 높은 생산성을 목표로 함.
  • 자바와 100% 호환됨.
  • Google I/O 2017에서 안드로이드의 공식 지원 언어로 채택됨.

특징

간결한 문법

  • 세미클론( ; ) 지옥에서 탈출할 수 있다
  • new 키워드를 쓰지 않고 객체를 생성한다
  • 타입 추론을 지원함 -> val, var 키워드를 사용하고 별다른 타입을 적어주지 않아도 된다.

Nullable

  • Kotlin은 Null 값의 허용 여부를 컴파일 단계에서 검사하므로 런타임에서 발생하는 오류를 줄일 수 있다.
    private var currentQueryValue: String? = null

가변/불변 구분

  • val : 값을 한번 할당하면 그 후에는 변경할 수 없다. Java에서의 final 키워드와 비슷. 변경하려고 하면 컴파일 에러 발생
  • var : 할당된 값을 자유자재로 바꿀 수 있다.
  • 컬렉션 자료형에서도 구분된다
    • List : 자료를 수정할 수 없는 리스트. add() 와 같은 함수가 정의되어 있지 않다
    • MutableList : 자료를 변경할 수 있는 리스트. add() 와 같은 함수가 정의되어 있다

람다 표현식 지원

  • Kotlin의 람다 표현식은 위 그림과 같이 중괄호를 사용하여 앞위를 묶어준 형태로 표현된다. 또한, parameters의 타입은 생략될 수 있다.
  • 멤버 참조(member reference) : Java의 method reference와 같은 의미이지만, Java와 달리 프로퍼티도 멤버 참조를 지원한다.
  • 람다 표현식의 매개변수가 하나인 경우에는 매겨변수 선언을 생략할 수 있고, 매개변수에 대한 참조가 필요한 경우는 it을 사용할 수 있다.
    // 멤버참조와 it을 사용한 예시 코드
    class Person(val name: String, val age: Int) {
    	val adult = age > 19 // 성인 여부 판단하는 프로퍼티
    }
    fun printAdults(people: List<Person>) {
    	people.filter({person.adult}) // 람다표현식으로 필터링 조건 대입
        		.forEach { println("Name= ${it.name}") } // 매개변수 선언 생략하고 it으로 매개변수 참조
        people.filter(Person::adult) // 멤버 참조를 사용하여 adult 프로퍼티를 바로 대입
        		.forEach { println("Name= ${it.name}") }
    }

인라인 함수(inline function)

  • 람다 표현식을 사용하여 작성한 함수는 컴파일 과정에서 익명 클래스로 변환된다. 따라서 익명 클래스를 사용하는 코드를 호출할 때마다 매번 새로운 객체가 생성되므로 실행 시점의 성능에 영향을 미치게 된다.
  • 인라인 함수를 사용하면, 함수의 매개변수로 받는 함수형 인자의 본체를 해당 인자가 사용되는 부분에 그대로 대입하므로 성능 하락을 방지할 수 있다.
  • 함수 선언 앞에 inline 키워드를 추가하여 사용한다.
  • 인라인 함수의 함수형 인자 중, 인라인 처리되지 않아야 하는 항목이 있다면 매개변수에 noinline 키워드를 추가하면 된다.

스트림 API 지원

  • Java8의 경우 컬렉션 내 자료를 다루는 데 유용한 스트림 API를 지원하지만, 안드로이드 버전 6.0 이상을 사용하는 플랫폼에서만 사용할 수 있다.
  • Kotlin의 경우, 표준 라이브러리를 통해 이러한 함수들을 제공하고 있으며, 안드로이드 플랫폼 버전과 상관없이 사용할 수 있다.

이렇게 Kotlin의 주요 특징들에 대해 알아보았고, 다음에는 문법에 대해 공부하겠다.

profile
step by step...my devlog

0개의 댓글