Kotlin(코틀린) 기본문법 2. 연산자, Null

차선호·2023년 3월 28일
0

Kotlin

목록 보기
2/8
post-thumbnail

연산자


기본 연산자

  • 종류
    • 산술, 대입, 증가, 감소, 비교, 논리 연산자 등

  • 산술 연산자
    • 사칙연산에 사용되는 사칙연산자와 나머지 연산자를 산술 연산자
    • ‘+’ : 덧셈, ‘ - ‘ : 뺄셈, ‘ * ’ : 곱셈, ‘ / ‘ : 나눗셈, ‘ % ‘ : 나머지

  • 대입 연산자
    • 대입 연산자는 변수에 값을 할당하는 연산자를 말함
    • 대입 연산자는 이항 연산자 중 우선 순위가 가장 낮으므로 모든 연산이 끝난 이후 마지막에 동작

  • 증감 연산자
    • 증감 연산자는 항이 단항임
    • ++, - -
      var num1 = 10
      var num2 = 10
      val result1 = ++num1 // num1 증가 후 대입
      println(result1) // 11
      val result2 = num2++ // 대입 후 num2 증가
      println(result2) // 10
  • 비교 연산자
    • '>', '<', '>=', '<=', 등의 연산
    • ==, ===, ! ==, ! ===
      • == : 두 개 항의 값이 같으면 true, 다르면 false
      • ! = : 두 개 항의 값이 다르면 true, 같으면 false
      • === : 두 개 항의 참조가 같으면 true, 다르면 false
      • ! == : 두 개 항의 참조가 다르면 true, 같으면 false

  • 논리 연산자
    • &&, ||, !
      • && : 논리곱으로 두 항이 모두 true일 때 true, 아니멸 false
      • || : 논리합으로 두 항 중 하나의 항만 true여도 true, 둘 다 false면 false
      • ! : 부정 단항 연산자로 true를 false로, false를 true로 바꿈


Null & Null Safe


Null

  • 코틀린의 변수 선언은 원래 null을 허용하지 않음
    var str:String = "Hello Kotlin"
    str = null // 오류 발생
  • null 가능한 선언 → ‘?’ 키워드 사용
    var str:String? = "Hello Kotlin"
    str = null // null 허용
  • NPE(NullPointerException)
    • 사용할 수 없는 null인 변수에 접근하면서 발생하는 예외

Safe-call & Non Null

  • safe-call
    • 변수 뒤에 ‘?’를 붙혀 호출

    • 값이 null일 경우 null이 입력됨

      fun main() {
          val x:String? = null
          println(strLenSafe(x)) // null
          println(strLenSafe("abc")) // 3
      }
      fun strLenSafe(s:String?): Int?{ //반환이 null로 될 수 있기 때문에 '?' 사용
          return s?.length
      }
  • 엘비스 연산자
    • null인 경우 default를 주고 싶을 때 ‘ ?: ’ 키워드 사용

      fun main() {
          val x:String? = null
          println(getStr(x)) // Unknown
          println(getStr("abc")) // abc
      }
      fun getStr(str:String?): String{
          return str ?: "Unknown"
      }
  • Non-null
    • 변수 뒤에 ‘!!’으로 표시(Not null 단정 기호)
      • 프로퍼티나 변수에 붙이면 null이 아니라고 강제로 선언
      • null이 들어올 경우 NPE 발생
        fun main() {
            ignoreNulls(null)
        }
        fun ignoreNulls(s:String?){
            val notNull:String = s!! //!!키워드 때문에 그냥 String으로 선언 가능
            println(notNull.length)
        }
profile
dkssud!

0개의 댓글