Kotlin에 대해 알아보기
17492 단어 spring-boot자바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);
}
}
기술하고 느낀 차이로는
// 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は読み取り専用
// マップ作成
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}")
}
fun main() {
val user = userData(20, "Taro", "Men")
user.selfIntroduction()
}
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}")
}
}
public class user {
public static void main(String[] args) {
userData user = new userData(20, "Taro", "Men");
user.selfIntroduction();
}
}
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);
}
}
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에서의 코드량이 적어져,
형추론이나 데이터 클래스등이 코드를 간결의 도움이 되고 있다고 느꼈습니다.
Reference
이 문제에 관하여(Kotlin에 대해 알아보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kemomimi02/items/fcb16bcb74689e990af7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)