경제적 자유를 위해

열심히 살아보자

개발/Kotlin

[Kotlin CS] 코틀린 - 기본 문법(코틀린 문법, 코틀린 문법 정리)

따식 2023. 10. 26. 19:00
728x90

기본 구문

코틀린에 대한 기본 구문에 대한 정리입니다.
머리가 복잡해질때쯤 기초부터 되돌아 가라는 정신으로 정리를 해보려고 합니다.

패키지 정의 및 가져오기

  • 패키지는 소스 파일 맨 위에 있어야 한다.
  • 패키지와 디렉터리를 일치시킬 필요는 없다.
  • 패키지를 지정 하지 않는 다면 기본 패키지에 속한다.

프로그램 진입점

Kotlin 애플리케이션도 자바와 마찬가지로 진입점은 main 함수다.

 

Print 출력하는 방법

  • print = 기본 출력 방법
  • println = 출력 + 한줄 띄어쓰기 

Functions

  • fun name() :Int - 반환형으로 설명
  • fun name() = a+b - 표현식으로 반환 유형이 유추됌
  • fun name() :Unit - 의미 있는 값을 반환하지 않는 함수
  • fun name() - Unit 반환형은 생략이 가능하다.

변수

  • val
    • 변경이 불가능한 값
  • var
    • 변경이 가능한 값

클래스 및 인스턴스

  • class로 선언
class Rectangle(var height: Double, var length: Double) {
    var perimeter = (height + length) * 2
}

클래스 안에 선언된 변수는 기본 생성자를 생성할 수 있다.

open class Shape

class Rectangle(var height: Double, var length: Double): Shape() {
    var perimeter = (height + length) * 2
}

클래스에 대한 상속은 : 로 표현한다.


주석

  • //
  • /**/

코틀린의 주석은 중첩이 가능하다.


String templates

문자열 사이에 $ 키워드를 사용하여 처리 할수 있다.

var a = 1
// simple name in template:
val s1 = "a is $a" 

a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"

조건식

fun maxOf(a: Int, b: Int) = if (a > b) a else b

코틀린은 위처럼 if로 처리할 수있 습니다.


For loop 문

val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
    println(item)
}

java와 다른점을 찾아보자면 for 안에 in으로 작성한다.


While loop 문

val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}

while문은 자바와 동일한 모습


When 문

fun describe(obj: Any): String =
    when (obj) {
        1          -> "One"
        "Hello"    -> "Greeting"
        is Long    -> "Long"
        !is String -> "Not a string"
        else       -> "Unknown"
    }

When문 작성법은 위와 같다. Java Switch 문법보다 보다 간결하고 편하다.


Ranges

간혹 사용되는 Ranges는 헷갈리는 경우가 많았었다..!

val x = 10
val y = 9
if (x in 1..y+1) {
    println("fits in range")
}

 

결과는 한번만 찍힌다. x = 10 이고 in 1..(9+1) 이여서

val list = listOf("a", "b", "c")
​
if (-1 !in 0..list.lastIndex) {
    println("-1 is out of range")
}
if (list.size !in list.indices) {
    println("list size is out of valid list indices range, too")
}

console 출력 값 
-1 is out of range
list size is out of valid list indices range, too

!in은 포함 되지 않으면 찍힌다. 이것도 생소하니 기억 해두자.

for (x in 1..5) {
    print(x)
}
console 출력 값
12345

1,2,3,4,5 순으로 이동된다.

for (x in 1..10 step 2) {
    print(x)
}
println()
for (x in 9 downTo 0 step 3) {
    print(x)
}
console 출력 값
13579
9630

Step은 건너뛰는 개념이라고 생각하면된다.


Collections

 

   val items = setOf("apple", "banana", "kiwifruit")

    when {
        "orange" in items -> println("juicy")
        "apple" in items -> println("apple is fine too")
    }
    
    console 출력 값
    apple is fine too

Collections에 item object를 in 키워드로 포함되어 있는지를 확인 할 수 있다.

  val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
    fruits
      .filter { it.startsWith("a") }
      .sortedBy { it }
      .map { it.uppercase() }
      .forEach { println(it) }
      
console 출력 값
APPLE
AVOCADO

Collections에서 람다 표현식으로 map, filter를 사용가능하다.


Nullable values and null checks

null이 가능한 경우는 ?로 표현한다.

fun parseInt(str: String): Int? {
    // ...
}

Type Check 및 자동 캐스트

연산자는 is 표현식으로 확인한다. 불변 지역 변수나 속성이 is로 검사되는 경우 명시적으로 캐스팅이 필요 없다. 

즉 매우 편하다.... 

fun getStringLength(obj: Any): Int? {
    if (obj !is String) return null

    // `obj` is automatically cast to `String` in this branch
    return obj.length
}

마무리

오랜만에 Kotlin CS에서도 기본중에 기본을 글로 적어봤다.

이중에 Ranges 범위 영역에서 !in(in 부정형)과 step은 평소(실무)에서 사용하지 않던 문법이였다.

기억해두자

2023.10.27 - [개발/Kotlin] - [Kotlin CS] 코틀린 - 관용어


참고 사이트
https://kotlinlang.org/docs/basic-syntax.html
 

Basic syntax | Kotlin

 

kotlinlang.org

728x90