Programming Language/Kotlin

코틀린 기초 - 기초 문법

TwinParadox 2024. 3. 17. 18:17
728x90
"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다.
버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다.

기본 문법

일반

  • 세미콜론으로 끝내지 않는다. 기본 스타일이고, 권장 스타일이니 이를 따르자.
  • 타입 추론을 하며, 강타입 언어다.

주석

  • 자바랑 기본적으로 동일함
  • 단, 자바와 다르게 코틀린은 multiline 주석을 내포할 수 있음

변수 정의

  • val 불변
  • var 가변
  • 자바와 다르게 코틀린은 대입문 연쇄(a = b = c )를 사용할 수 없다.
    • 값을 돌려주지 않는다.
    • 복합 대입 연산에도 해당한다.
  • 모든 코틀린의 타입은 근본적으로 클래스 정의를 기반으로 만들어진다.
  • a = 'a' 인 변수의 a + 5 대해서,
    • 자바 : 결과를 암시적으로 정수로 변환 ASCII
    • 코틀린 : f로 변환됨. 모든 연산이 이런 식이로 차 연산만 해당하지 않음
  • 코틀린에서는 범위가 큰 타입인 변수에 작은 타입의 변수를 대입 불가능하다.
val n = 100 // Int
val l: Long = n // Error!
  • Boolean의 eager, lazy 방식
    • eager 방식은 이름 붙은 중위 연산자와 동등한 우선 순위
    • eager 가 lazy 보다 더 높은 우선순위를 가짐
// or, and, xor : eager
// ||, && : lazy
// 아래 두 예제는, x == 1에서 오른쪽 연산은 0으로 나누는 연산이 되어, 반드시 lazy 연산 필요
x == 1 || y / (x-1) != 1
x != 1 && y / (x-1) != 1
  • 문자열 템플릿
    • 문자열 중간에 ${} 형태로 값을 넣을 수 있음
    • 변수인 경우 중괄호 생략하고 바로 변수명으로 적용 가능
val name = raedLine()
println("Hello $name!\n Today is ${Date()}")
  • 문자열 비교 연산
    • ==equals() 와 동일한 것
    • 참조 체크는 ===, !== 사용

배열

val a = emptyArray<String>()
val b = arrayOf("a", "b")
val c = readLine()!!.toInt()
val d = IntArray(10) { (it+1)*(it+1) } // it는 인덱스를 표현하는 변수이며, 자동 선언되는 변수임
  • ByteArray, ShortArray, IntArray, LongArray, FloatArray … 등등의 원시 타입 배열 선언 가능
    • Array<Int> 는 모든 타입을 박싱하는 것
    • charArrayOf() CharArray() 형태로 사용
  • 코틀린에서는 배열 원소를 명시적으로 초기화해야 함
  • 자바에서는 상위 타입 배열에 하위 타입의 배열 대입이 가능하지만, 코틀린은 불가
// Java
Object[] objects = new String[] { "a", "b", "c" };
objects[0] = new Object(); // ArrayStoreException

// Kotlin
val strings = arrayOf("a", "b", "c")
val objects: Array<Any> = strings // exception
  • 배열의 == , != 은 참조 비교, 원소 비교는 contentEquals() 사용

 

 

Reference

코틀린 완벽 가이드

728x90
728x90

'Programming Language > Kotlin' 카테고리의 다른 글

코틀린 기초 - 클래스 기초  (0) 2024.03.24