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

김종완·2022년 6월 5일
1

코틀린 문법 학습

목록 보기
3/6

코틀린에서 변수를 다루는법


모든 변수는 var/val을 붙여 주어야 한다.


  • var : 변경 가능하다
  • val : 변경 불가능하다 (raed-only)
  • 타입을 명시적으로 작성하지 않아도 타입이 추론된다.

코틀린에서 타입을 지정할 때


var number1: Long = 10L

과 같이 지정하는데 이 때 Primitive type 과 Reference type 타입을 구분하지 않는다. 이는, 코틀린이 내부적으로 Primitive를 사용할 지 Reference를 사용할지 정하기 때문이다. 즉, 프로그래머가 boxing/ unboxing을 고려하지 않아도 되도록 Kotlin이 알아서 처리 해준다.

코틀린에서 null을 넣을 때


  • 코틀린에서는 기본적으로 모든 타입에 null을 넣을 수 없다. null 값을 넣고 싶을 때는 타입? 과 같은 형식으로 ?를 붙여야 된다.
  • 그리고 객체를 인스턴스화 할 때 new를 붙이지 않아야 한다.

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


// null이 아닌 경우에만 호출되는 Safe Call (?.) 이 있다
// ?: 연산자를 Elvis 라고 부르는데 이유는 ?:를 우측으로 90도 회전한 모양이
// Elvis라는 사람의 헤어스타일과 닮았기 때문이라고 한다.
// Elvis 연산자를 통해서 null 값일 경우 ?: 우측에 식을 실행시킨다.
// null이 절대 아닐때 사용할 수 있는 널 아님 단언 (!!) 이 있다.

// null일 경우 Exception을 발생한다.
fun startsWithA1(str: String?): Boolean {
    return str?.startsWith("A")
        ?: throw IllegalArgumentException("null이 들어왔습니다.")
}

// null일 경우 null을 리턴 리턴 타입을 자세히 보면 Boolean?으로 되어있다.
fun startsWithA2(str: String?): Boolean? {
    return str?.startsWith("A")
}

// null일 경우 false를 리턴
fun startsWithA3(str: String?): Boolean {
    return str?.startsWith("A") ?: false
}

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

코틀린의 Type 변환


Java 기본 타입간의 변환은 암시적으로 이루어질 수 있다.
Kotlin 기본 타입간의 변환은 명시적으로 이루어져야 한다.

int number1 = 4;
long number2 = number1;
System.out.println(number1 + number2);

자바에서는 위와 같이 타입이 다른 두 변수를 연산할 경우 자동 타입 변환을 진행하지만 Kotlin 같은 경우 자동 타입 변환을 지원하지 않는다.

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

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


Java에서는 동일성에 == 를 사용, 동등성에 equals를 직접 호출
Kotlin에서는 동일성에 ===를 사용, 동등성에 ==를 사용하면 간접적으로 equals를 호출해준다.
간단하게 === 는 주소비교 == 는 값 비교

  • 객체끼리도 자동 호출되는 compareTo를 이용해 비교 연산자를 사용할 수 있다.
  • 객체 끼리의 연산자를 직접 정의할 수 있다.
profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글