본문 바로가기
공부/Kotlin

[Kotlin] 문법 정리 - 1

by JERO__ 2022. 5. 2.

1. 변수타입

  • val : 상수
  • var : 가변변수
  • const val : static final 정적 상수
private const val EMPTY_NAME_ERROR_MESSAGE = "이름을 입력하지 않았습니다"
private const val MAX_NAME_LEGNTH = "이름을 5글자 이하로 입력해주세요"

2. 생성자

  • constructor : 생성자
  • init : 객체를 생성할 때 원하는 작업 추가

3. 클래스 : data, object, companion object

  1. data class : java의 POJO클래스와 비슷. toString, hashCode, equals 오버라이딩
data class Person(val name: String, val age: Int, val nickname: String = name)

2. object : singleton 객체를 지원 → static 메서드

object InputView {

    private const val CAR_DELIMITER = ","
    private const val NUMBER_REGEX = "^[0-9]+$"

    val carNames: List<Name>
        get() {
            try {
                return splitCarNames(readLine().toString())
            } catch (e: IllegalArgumentException) {
                OutputView.printException(e.message)
                return carNames
            }
        }

3. companion object : static과 비슷하게 사용되어 보이지만 실제론 객체이다.

  • 이름 선언 X
class MyClass{
    companion object {
        val prop = "나는 Companion object의 속성이다."
        fun method() = "나는 Companion object의 메소드다."
    }
}
fun main(args: Array<String>) {
    println(MyClass3.companion.prop)
    println(MyClass3.companion.method())
}
  • 이름 선언 O
class MyClass{
    companion object MyCompanion {
        val prop = "나는 Companion object의 속성이다."
        fun method() = "나는 Companion object의 메소드다."
    }
}
fun main(args: Array<String>) {
    println(MyClass.MyCompanion.prop)
    println(MyClass.MyCompanion.method())
}

4. 변수 출력 : + 가 아닌, $ 기호

private const val WINNER_MESSAGE = "가 최종 우승했습니다."

private fun printCarPositionInfo(car: Car) {
    println("${car.name} : ${"-".repeat(car.position)}")
}

5. 예외 발생 : check(), require()

require(second != 0) { "0으로 나눌 수 없습니다." }

6. try-catch문을 바로 리턴할 수 있다.

fun getCarInput(): Cars {
    val userInput = getCarNamesByUser()
    return try {
        Cars(generateCars(userInput))
    } catch (e: IllegalArgumentException) {
        printErrorMessage(e.message)
        getCarInput()
    }
}

'공부 > Kotlin' 카테고리의 다른 글

2장. 코틀린 기초  (0) 2022.05.29
1장. 코틀린이란 무엇이며, 왜 필요한가?  (0) 2022.05.28
[Kotlin] 문법 정리 - 2  (0) 2022.05.04
[Kotlin] 자동차 경주  (2) 2022.04.29
[YOUTHCON'21] Kotlin 맛  (0) 2022.04.29

댓글