코틀린학습 - #1 기초

2020. 11. 9. 13:46개발&TIL/kotlin

기본 요소

  • 스마트 캐스트: 타입 검사와 타입캐스트, 타입 강제 변환을 하나로 엮은 기능
  • 함수를 선언할 때 fun 키위드 사용
  • 파라미터 이름뒤에 그 파라미터의 타입을 쓴다, 변수 선언시도 동일
  • 함수를 최상위에 정의할 수 있다.
  • System.out.println 대신에 println 사용가능, 표준 자바 라이브러리를 간결하게 사용 가능
  • 세미콜론을 붙이지 않아도 좋다.

함수

  • 코틀린에서는 루프를 제외한 대부분의 제어 구조가 식이다.
  • 코틀린에서는 식이 본문인 함수가 자주 쓰인다.
  • 반환 타입을 생략할 수 있는 이유는 컴파일러가 함수 본문 식을 분석해서 식의 결과 타입을 함수 반환 타입으로 정해준다.
    이렇게 컴파일러가 타입을 분석해서 요소의 타입을 정해주는 기능을 타입 추론(type inference) 이라고 한다.

변수

  • 타입 지정을 생략하는 경우가 흔하다.
  • 타입 지정을 앞에 선언하는 방식일때 식과 변수 선언을 구별할 수 없는 이유로 타입을 뒤에 선언한다.
  • val(value) : 변경 불가능한 참조를 저장하는 변수, 자바의 final
  • var(variable) : 변경 가능한 변수, 자바의 일반 변수
  • 기본적으로 val 키워드를 사용하고 필요시에 var로 변경하라.
  • val 참조 자체는 불편이지만 그 참조가 가르키는 객체의 내부 값은 변경될 수 있다.
  • var 키워드는 변수의 타입은 고정된다.

문자열 템플릿

  • 스크립트 언어와 비슷하게 문자열 안에 변수를 사용할 수 있다.
  • 복잡한 식도 중괄호를 둘러싸서 문자열 템플릿 안에 넣을 수 있다.

클래스와 프로퍼티

  • public 가시성 변경자는 생략된다. 기본값
  • 클래스에서 프로퍼티를 선언할때는 val이나 var를 사용한다.
  • val의 경우 게터만 생성, var의 경우 게터, 세터를 생성
  • 클래스 임포트와 함수 임포트는 차이가 없으며, 모든 선언을 import 키워드로 가져올 수 있다.

선택 표현과 처리: enum과 when

  • 코틀린에서 enum은 소프트 키워드 라 부르는 존재다.
  • enum 클래스 안에 메소드를 정의하는 경우 반드시 enum 상수 목록과 메소드 정의 사이에 세미콜른을 넣어야 한다.
  • when도 값을 만들어 내는 식이다.
  • when 사용시 자바와 달리 분기마다 break를 넣지 않아도 된다.
  • enumClass.* 사용시에 해당하는 enum 상수를 모두 임포트하여 짧게 사용이 가능하다.
  • Set 객체의 setOf() 함수를 사용하면 컬렉션의 원소가 순서 상관없이 같은지 체크한다.

스마트 캐스트: 타입 검사와 타입 캐스트

  • is 검사는 자바의 instanceof와 비슷하다.
  • 자바와 다르게 is로 검사하고 나면 굳이 변수를 캐스팅하지 않아도 된다. 이것이 스마트 캐스트
  • IDE에서는 스마트 캐스트를 배경색으로 표시도 해준다.
  • 원하는 타입으로 명시적으로 타입 캐스팅을 하려면 as 키워드를 사용

대상을 이터레이션: while과 for 루프

  • for는 자바의 for-each 형태만 존재
  • .. 연산자로 시작과 끝 값을 연결해서 범위를 만든다.
  • 범위를 가지고 이터레이션 -> for (i in 1..100)
  • 증가 값을 가지고 이터레이션 -> for (i in 100 downTo 1 step 2)
  • 끝 값을 포함하지 않는 이터레이션 -> for (i in 0 until 100)

맵 이터레이션

  • get, put 대신 map[key], map[key] = value 를 사용한다.
  • withIndex() 를 사용하면 인덱스와 함께 컬렉션을 이터레이션

in 연산잔

  • in 연산자를 사용하여 값의 범위에 속하는지 검사할 수 있다.
    ex) fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'z'
    ex) fun isNotDigit(c: Char) = c !in '0'..'9'

예외 처리

  • try, throw 는 식으로 다른 식에 포함될 수 있다.
  • 코틀린에서는 함수가 던질 수 있는 예외를 선언하지 않아도 된다.
  • 예외 타입을 : 오른쪽에 쓴다.
  • finally 는 자바와 같다.
728x90

'개발&TIL > kotlin' 카테고리의 다른 글

코틀린학습 - #6 오버로딩  (0) 2020.11.17
코틀린학습 - #5 타입 시스템  (0) 2020.11.17
코틀린학습 - #4 람다  (0) 2020.11.16
코틀린학습 - #3 클래스  (0) 2020.11.11
코틀린학습 - #2 함수  (0) 2020.11.09