728x90
코틀린 기초
나는 Java + Spring boot를 주로 사용하는 개발자 이지만,
Kotlin은 같은 JVM 환경에서 돌아가고,
Java를 공부한 사람이 접근하기 쉽다고 하여 한번 겉핥기 식으로 공부해보려한다.
기본적 특징
- 기존 자바 언어와 완벽한 호환성을 제공
- 안전성: NPE 방지, Immutable 자료구조 제공
- 간결성: 코드는 작성되는 시간보다 읽히는 데 훨씬 많은 시간이 소모(간결한 코드는 가독성과 유지보수성을 향상시킴)
- 코루틴 라이브러리를 통한 비동기 프로그래밍
- OOP와 FP 구조를 함께 사용할 수 있음
728x90
코틀린 기본 문법
// java
int a = 10;
// Kotlin
val a: Int = 10
var a = 15
- 변수 선언 방식이 Go나 TS와 비슷하다.
- Go 처럼 ";"를 생략해도 된다.
- val : 변할 수 없는 상수 Java의 final, Go의 const
- var : 일반적인 변수에 해당.
함수
// java
public int sum(int a, int b) {
return a + b;
}
// kotlin
fun sum(a: Int, b: Int): Int {
return a + b
}
// 간단하게 변형
fun sum(a: Int, b: Int): Int = a + b
// 또는 아래와 같이 타입을 생략하여 바로 return도 가능
fun sum(a: Int, b: Int) = a + b
- 함수 선언도 Go나 Typescript와 비슷하다.
fun max(a: Int, b: Int) = if (a > b) a else b
- 이렇게 함수를 사용할 수도 있다.
var a: Int = 15
a = null // 문법상 오류 발생
var b: Int? = null
b = null // 정상 수행
- 기본 변수는null을 가질 수없고 '?'가 있어야 null을 가질 수 있다.
- '!!'도 있는데, null이면 오류가 발생한다.
- 예시
// example 객체의 a를 return 하지만 example이 null이면 null을 리턴
fun example(example: Example?): Int? {
// ...
return example?.a
}
- 타입을 TS처럼 Any로 지정할 수 있다.
- Java의 Object
- is는 Java instanceof
// java
int getStringLength(Object obj) {
if (obj instanceof String) {
return obj.length;
}
return 0;
}
// kotlin
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// 'obj' is automatically cast to 'String' int this branch
return obj.length
}
// 'obj' is still of type 'Any'
// Type이 String이 아니라서 null을 return 하게 됩니다.
return null
}
반복문
// java
ArrayList<String> arrayList = new ArrayList<>();
for (String s : arrayList) {
System.out.println("TAG String : " + s);
}
// kotlin
val arrayList = ArrayList<String>()
for (s in arrayList) {
println("TAG String : " + s)
}
// java
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
// kotlin
for (i in 1..5) {
println(i)
}
- Java와 매우 비슷하다.
When
fun main(args: Array<String>) {
cases("Hello") // String
cases(1) // Int
cases(System.currentTimeMillis()) // Long
cases(MyClass()) // Not a string
cases("hello") // Unknown
}
fun cases(obj: Any) {
when (obj) {
1 -> println("One")
"Hello" -> println("Greeting")
is Long -> println("Long")
!is String -> println("Not a string")
else -> println("Unknown")
}
}
- 자바의 switch랑 비슷한데, Go처럼 Break가 없어도 된다.
진짜 간단하게 알아봤는데,
업무나 프로젝트를 진행해봐야 진짜 편리함을 알 수 있을 것 같다.
사이드 프로젝트를 진행하게 되면 코틀린을 한 번 사용해보려 한다.
728x90
'개발 > Java&Kotlin' 카테고리의 다른 글
[Spring] 스프링 부트에서 Spring Rest Docs 적용하기 (0) | 2022.11.30 |
---|---|
[Spring] 스프링 부트에서 크롤링 하기 (2) | 2022.11.28 |
[Spring] 스프링 부트에 캐시 적용하기 (0) | 2022.11.24 |
[Spring] 테스트 커버리지 확인하기 (0) | 2022.11.22 |
[Spring] 테스트 코드 적용하기 (0) | 2022.11.21 |