WYPark
ReaderWYPark
GitHubEmail
홈아카이브체스
홈아카이브체스

라이브러리

검색과 카테고리

카테고리

미분류

© 2026 Dev Park

Finder로
Reader
Kotlin
kotlin-문법
Kotlin

Kotlin 문법

Dev Park
2024. 4. 11.

서론

이제 앞서서하던 Java를 이용한 Springboot 프로젝트가 마무리되면서 다음 프로젝트로는 Kotlin을 사용한 프로젝트를 계획하게 되었다.
해당 프로젝트에 들어가기 앞서 Kotlin 문법에 대해서 공부하고자 이 포스팅을 작성하게 되었다.

변수

변수 선언은 Java 보다는 Javascript에 가깝다고 느꼈다.

var: 변수값이 변경 가능한 변수 선언 (Javascript의 var,let)
val: 선언시에만 초기화 가능 (Javascript의 const, Java의 final)

Kotlin
1fun main() { 2 var a: Int 3 a = 123 4 print(a) // 123 5 6 a = 234 7 print(a) // 234 8 9 val b:Int = 1232 10 print(b) // 1232 11 12 b = 3 // 에러 발생 13 print(b) 14}

변수를 선언할 떄 변수이름 옆에 :(타입) 을 입력해줘야한다.
그리고 타입 옆에 ?를 붙여주면서 nullable을 나타낼 수 있다.

Kotlin
1fun main() { 2 var a:Int? = null 3 print(a) //null 4}

형변환

형 변환은 Java와 크게 다르지 않다.
to변수타입() 을 통해 형변환이 가능하다.

Kotlin
1fun main() { 2 var a:Int = 123 3 var b:String = a.toString; 4}

참고로 코틀린은 암시적 형변환을 지원하지 않는다.

배열

Kotlin
1fun main() { 2 var intArr:Array<Int> = arrayOf(1,2,3,4) // Int형으로 배열 생성 3 var intArr2 = arrayOfNulls<Int>(5) // Type선언 생략가능, Nullable 4 var anyArr : Array<Any> = arrayOf(1,"a",3.2) // Any타입을 통해 어느 데이터든 들어갈 수 있음 5 6 print(intArr[0]) // 1 7 print(intArr2[0]) // null 8 print(anyArr[1]) // a 9}

함수

함수 선언은 fun (함수이름) 으로 적는다.
그 다음 괄호에 매개변수를 적고 매개변수 타입을 선언해준다.
그리고 매개변수 뒤에 반환될 타입을 선언해준다.

Kotlin
1fun main() { 2 print(add(1,2,3)) // 6 3} 4 5fun add(a:Int, b:Int, c:Int): Int { 6 return a+b+c; 7}

위와 같은 함수는 아래와 같이 단일 표현식으로도 적을 수 있다.

Kotlin
1fun add(a: Int, b: Int, c: Int) = a + b + c // Int타입만을 더하기때문에 Int타입으로 추론가능

조건문

기본적으로 다른 언어들과 크게 다르지 않다.
조금 다른게 있다면 Switch문을 when으로 쓴다는 점이다.

kotlin
1when(a){ 2 1 -> print(2) 3 "awd" -> print("dwa") 4 else -> print(a) 5}

값을 할당해줄때도 다음과 같이 쓸 수 있다.

kotlin
1var b = when(a){ 2 1 -> 1 3 "awd" -> "dwa" 4 else -> a 5}

반복문

반복문 또한 다른 언어와 크게 다르지 않다.

Kotlin
1while(i < 3){ 2 println(i) 3 i++ 4} 5 6// i가 0부터 3까지 높아지며 반복 7for(i in 0..3){ 8 print(i) 9 print(" ") 10} 11 12// i가 3부터 0까지 낮아지며 반복 13for(i in 3 downTo 0){ 14 print(i) 15 print(" ") 16} 17 18// i가 0부터 5까지 2씩 높아지며 반복 19for(i in 0..5 step 2){ 20 print(i) 21 print(" ") 22} 23 24// i가 a부터 e까지 알파벳 순서로 반복 25for(i in 'a'..'e'){ 26 print(i) 27 print(" ") 28}

클래스

자바와 가장 다른점은 이 클래스 선언일 것이다.
일단 자바와 다르게 생성자를 따로 선언해주지 않아도 된다.

Kotlin
1class a(var name:String, val age:Int) { 2 fun introduce() { 3 println("$name $age") 4 } 5} 6 7fun main() { 8 var b = a("홍길동",26) 9 10 b.introduce() // 홍길동 26 11 println("${b.name}, %{b.age}) // 홍길동, 26 12}

코틀린의 클래스에는 init이라는 기능이 있는데 이는 클래스가 인스턴스로 생성될 때 발생하는 로직을 정할 수 있다.

Kotlin
1class a(var name:String, val age:Int) { 2 init{ 3 println(create : ${this.name}) 4 } 5} 6 7fun main() { 8 var b = a("홍길동",26) // create : "홍길동" 9}

상속에 대해서도 조금 다른점이 있다.
상속을 받기 위해서는 부모클래스의 메소드에 open이라는 값을 입력해줘야한다.
상속받은 메소드를 override를 붙여서 override할 수 있다.

Kotlin
1open class Person(var name:Strings, var job:String) { 2 open fun introduce() { 3 println("${this.name} ${this.job}") 4 } 5} 6 7class Artist(var name:String, var job:String) : Person(name, "예술가") { 8 override fun introduce() { 9 super.introduce() 10 } 11}
Navigation
이전 글Kotlin다음 글테스트할때 Request 객체를 어떻게 구성해야할까?
Comments
목차

목차

  • 서론
  • 변수
  • 형변환
  • 배열
  • 함수
  • 조건문
  • 반복문
  • 클래스