Kotlin에 대해 알아보기

Kotlin에 대해 알아보기



kotlin이란?



Kotlin은 IntelliJ IDEA로 유명한 JetBrains가 개발한 객체 지향 프로그래밍 언어입니다.
컴파일 된 코드는 JVM에서 실행되므로,
지금까지 JAVA에서 작성한 자산을 유용할 수 있도록 되어 있습니다.

Kotlin의 기본 구문



변수 선언


// val で宣言すると値の再代入ができなくなる  
val firstName: String = "Tanaka"  
// 型推論でいちいち型の定義がいらない  
val lastName = "Taro"  

// var で宣言すると再代入ができる  
var age = 20  
age = 21

배열


// 配列(array)を作成  
val nameList: Array<String> = arrayOf("tanaka", "saitou", "kimura")  
println(nameList[0]) // tanaka が出力  

// 配列の要素の書き換え  
nameList[1] = "sakurai"  
println(nameList[1]) // sakurai が出力  

// 配列(リスト)を作成  
val animalList: List<String> = listOf("dog", "cat", "rabbit")  
println(animalList[0]) // dog が出力  

// 配列の要素の書き換え  
animalList[1] = "tiger" // エラー インターフェイスListは読み取り専用

List 에서도 mutableListOf() 로 변경 가능한 리스트가 생기기 때문에 Array 와 List 의 구분을 모르겠습니다.

지도


// マップ作成  
val numberMap: MutableMap<String, Int> = mutableMapOf("one" to 1)  
println(numberMap["one"]) // 1 が出力  
//// 値の追加  
numberMap["tow"] = 2  
println(numberMap)        // {one=1, tow=2} が出力  

// mapOf でマップ作成  
val reNumberMap: Map<Int, String> = mapOf(1 to "one")  
println(reNumberMap[1])   // 1 が出力  
//// 値の追加  
reNumberMap["tow"] = 2    // エラー mapOf は 読み取り専用

조건 분기


// 普通のif文  
if (true) {  
    println("if")   // if が出力  
} else {  
    println("else")  
}  

// Kotlinに三項演算子はないのでそれっぽいの  
val animal = "dog"  
val isDog = if (animal == "dog") true else false  
println(isDog)      // true が出力  

// 空チェックとかなら  
val person:String? = null  
val personName = person?: "NoName"  
println(personName) // NoName が出力  

// when文 switch文と同じような感じ  
val result = when("hoge") {  
    "hoge" -> "hoge"  
    "fuga" -> "fuga"  
     else -> "else"  
}  
println(result)     // hoge が出力

루프 처리


// while 文  
var count = 5  
while(0 < count--) {  
    println("while count: ${count}")  
}  

// for 文  
for (i in 1..5) {  
    println("for count: ${i}")  
}

JAVA와 Kotlin의 비교



user 클래스에 연령, 이름, 성별을 더하고,
자기 소개 메소드를 실행하는 코드를 작성해 보았습니다.

Kotlin



user.kt
fun main() {  
    val user = userData(20, "Taro", "Men")  
    user.selfIntroduction()  
}

userData.kt
data class userData (  
    var age: Int? = 0,  
    var name: String = "NoName",  
    var gender: String? = null  
) {  
    fun selfIntroduction() {  
        println("My name is ${name}")  
        println("Age is ${age}")  
        println("Gender is ${gender}")  
    }  
}

자바



user.java
public class user {  
    public static void main(String[] args) {  
        userData user = new userData(20, "Taro", "Men");  
        user.selfIntroduction();  
    }  
}

userData.java
public class userData {  
    private int age;  
    private String name;  
    private String gender;  

    public userData(int age, String name, String gender) {  
        this.age = age;  
        this.name = name;  
        this.gender = gender;  
    }  

    public void selfIntroduction() {  
        System.out.println("My name is " + this.name);  
        System.out.println("Age is " + this.age);  
        System.out.println("Gender is " + this.gender);  
    }  
}

기술하고 느낀 차이로는
  • 생성자를 만드는 데 New가 필요하지 않습니다
  • 형식 추론의 기능으로 인해 반드시 형식을 정의 할 필요는 없습니다.
  • 후미 세미콜론이 필수는 아닙니다
  • 문자열 리터럴에 표현식을 넣을 수 있습니다

  • Spring Boot 에서 Hello World



    환경



    Windows10 Pro
    IntelliJ Community Edition 2020.2
    JAVA 14

    프로젝트의 병아리 만들기



    Spring Initializr을 사용하여 프로젝트의 병아리를 얻습니다.

    설정은
    Project : Gradle Project
    Language : Kotlin
    Spring Boot : 2.3.4
    Project Metadata : 기본값 그대로
    Packaging Jar
    자바 : 14
    Dependencies : Spring Web



    마지막으로 GENERATE를 눌러 프로젝트의 병아리를 다운로드하십시오.

    만든 프로젝트의 병아리 빌드



    IntelliJ에서 File→Open...→다운로드한 프로젝트의 병아리를 선택→OK의 순서로 전개

    컨트롤러 만들기


    demo/src/main/kotlin/com.example.demo/controller 폴더에
    오른쪽 클릭 → New → Kotlin File/Class를 누르십시오
    HelloController.kt를 만듭니다.

    HelloController.kt
    package com.example.demo.controller
    
    import org.springframework.web.bind.annotation.RestController
    import org.springframework.web.bind.annotation.RequestMapping
    
    @RestController
    public class HelloController {
        @RequestMapping("/")
        fun hello():String {
            return "Hello World"
        }
    }
    

    웹 서버 시작





    오른쪽 상단의 재생 버튼을 눌러 빌드

    연결



    빌드가 끝나면 http://localhost:8080 에 연결



    감상



    필자는 JAVA를 별로 만진 적이 없기 때문에,
    JAVA를 모르고 갑자기 Kotlin은 괜찮을까 불안을 느꼈습니다만,
    갑자기 Kotlin에서 쓰기 시작했는데, 갑자기 Kotlin에서도 문제없이
    오히려 Kotlin에서 시작하는 것이 더 쉽다고 느꼈습니다.
    JAVA와 써 비교해 보았더니, Kotlin에서의 코드량이 적어져,
    형추론이나 데이터 클래스등이 코드를 간결의 도움이 되고 있다고 느꼈습니다.

    좋은 웹페이지 즐겨찾기