Skip to content

인프런 자바 개발자를 위한 코틀린 강의 Java 코드 자료

Notifications You must be signed in to change notification settings

jjongwa/java-to-kotlin-starter-guide

 
 

Repository files navigation

자바 개발자를 위한 코틀린 입문 강의 Java 코드

Section 01. 코틀린에서 변수와 타입, 연산자를 다루는 방법

Lec 01. 코틀린에서 변수를 다루는 방법

  • 모든 변수는 var / val을 붙여 주어야 한다.
    • var: 변경 가능하다 / val: 변경 불가능하다(read-only)
  • 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.
  • Primitive Type과 Reference Type을 구분하지 않아도 된다.
  • Null이 듫어갈 수 있는 변수는 타입 뒤에 ?를 붙여주어야 한다.
    • 아예 다른 타입으로 간주됨
  • 객체를 인스턴스화 할 때, new를 붙이지 않아야 한다.

Lec 02. 코틀린에서 null을 다루는 방법

  • 코틀린에서 null이 들어갈 수 있는 타입은 완전히 다르게 간주된다.
    • 한 번 null 검사를 하면 non-null임을 컴파일러가 알 수 있다.
  • null이 아닌 경우에만 호출되는 Safe Call ?.이 있다.
  • null인 경우에만 호출되면 Elvis 연산자 ?:가 있다. (else 같은 느낌)
  • null이 절대 아닐때 사용할 수 있는 Null 아님 단언 !! 이 있다.
  • Kotlin에서 Java 코드를 사용할 때 플랫폼 타입 사용에 유의해야 한다.
    • Java 코드를 읽으며 null 가능성 확인 / Kotlin으로 wrapping

Lec 03. 코틀린에서 Type을 다루는 방법

  • 코틀린의 변수는 초기값을 보고 타입을 추론하며, 기본 타입들 간의 변환은 명시적으로 이루어진다.
  • 코틀린에서는 is, !is, as, as? 를 이용해 타입을 확인하고 캐스팅한다.
  • 코틀린의 Any는 Java의 Object와 같은 최상위 타입이다.
  • 코틀린의 Unit은 Java의 void와 동일하다.
  • 코틀린에 있는 Nothing은 정상적으로 끝나지 않는 함수릐 반환을 의미한다.
  • 문자열을 가공할 때 ${변수}""" """를 사용하면 깔끔한 코딩이 가능하다.
  • 문자열에서 문자를 가져올 때, Java의 배열처럼 []를 사용한다.

Kotlin의 특이한 타입 3가지

  • Any

    • Java의 Object 역할 (모든 객체의 최상위 타입)
    • 모든 Primitive Type의 최상위 타입도 Any이다.
    • Any 자체로는 null을 포함할 수 없음 -> 포함하고 싶다면 Any?로 표현
    • Any에 equals / hashCode / toString 존재
  • Unit

    • Java의 void와 동일한 역할
    • void와 다르게 Unit은 그 자체로 타입 인자로 사용 가능하다.
    • 함수형 프로그래밍에서 Unit은 단 하나의 인스턴스만 갖는 타입을 의미
      • 즉, Kotlin의 Unit은 실제 존재하는 타입이라는 것을 표현
  • Noting

    • 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할
    • 무조건 예외를 반환하는 함수 / 무한 루프 함수 등

Lec 04. 코틀린에서 연산자를 다루는 방법

  • 단항연산자, 산술연산자, 산술대입연산자 -> Java와 똑같음
  • 비교연산자 사용법도 이하동문
    • 단, 객체끼리도 자동 호출되는 compareTo를 이용해 비교 연산자를 사용할 수 있다.
  • in, !in / a..b / a[i] / a[i] = b 와 같이 코틀린에서 새로 생긴 연산자도 있다.
  • 객체끼리의 연산자를 직접 정의할 수 있다.

About

인프런 자바 개발자를 위한 코틀린 강의 Java 코드 자료

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 85.4%
  • Kotlin 14.6%