코틀린 기본 - 1

김민창·2022년 8월 1일
0
post-thumbnail

인프런 최태현님의 코틀린 강의를 토대로 정리했습니다

변수

  • 변수명: 데이터타입 형태

  • var : 변경 가능한 변수

  • val : 변경 불가능 (final)

  • 타입을 명시적으로 안써줘도 상관없다

  • 자바처럼 Primitive TypeWrapper Type을 구분하지 않는다

  • null이 들어갈 수 있는 변수는 타입 뒤에 ?를 붙인다
fun testMethod(name: String?) 	// name의 타입은 String이지만 뒤에붙은 '?'로 null이 될수있음을 의미
{
}

null 관리

  • 코틀린은 null검사에 매우 엄격하다

  • 코드 상단에서 null검사를 한번이라도 했다면 해당 값은 non-null로 판단한다

  • 코드 상단에서 nullable한 변수라고 선언했는데 null체크를 하지 않았다면 에러

  • 해당 변수가 null인지 판단하는 Safe Call
    만약 해당 변수가 null이라면 그대로 null 반환

fun testMethod(name: String?){ 	// name의 타입은 String이지만 뒤에붙은 '?'로 null이 될수있음을 의미
  println(name?.length)			// name이 null이 아니라면 name의 length를 구한다. null이라면 null그대로 출력
}
  • 자바에서의 삼항연산자와 비슷한 Elvis 연산자
fun testMethod(name: String?){
  println(name?.length ?: 0)	// "?:" 앞의 값이 null 이라면 뒤에있는 값을 반환. name이 null이라면 0을 출력, null이 아니라면 name의 길이 출력
}
  • null값 아님 보증 !!
    nullable하다고 선언했지만, null체크를 안하더라도 null아님을 보증하며 컴파일시 에러가 나지 않는다
fun testMethod(name: String?){	// name은 nullabel하다고 선언
  println(name!!.length)		// null값 아님이 보증되어 가능
  println(name.length)			// 에러
}

신기한 데이터 타입

  • Any : 자바의 Object 역할. 하지만 null을 표함하지 않아 null 포함을 위해 Any?로 표현

  • Unit : 자바의 void 역할. 함수형 프로그래밍에서 단 하나의 인스턴스만 갖는 타입을 의미

  • Nothing : 함수가 정상적으로 끝나지 않음을 의미. 무조건 예외를 반환하는 함수, 무한루프 함수 등

  • 자바에서 String값을 가져오기 위해 str.charAt(0)을 사용했었지만, 코틀린에서는 배열처럼 str[0] 처럼 사용


연산자

  • 자바에서 객체끼리의 주소를 비교하기위해 ==를 사용하고, 코틀린에서는 ===을 사용한다

  • 자바에서 객체 값을 비교하기 위해 .equals를 사용하고, 코틀린에서는 == 을 사용한다

  • in : sql문에서 사용하듯 값이 컬렉션에 포함되어있는지 확인

  • !in : 컬렉션에 포함되어있지 않은지 확인

  • a..b : a부터 b까지의 범위 객체를 생성

profile
개발자 팡이

0개의 댓글