Kotlin은 JetBrain에서 개발한 JVM 100% 호환가능한 언어이다.
Kotlin은 간결하고 모던한 코드를 지향한다.
Kotlin은 2011년에 출시 됐으며 2017년부터 Android의 공식 언어로 채택됐다.
Kotlin은 JVM과 100% 호환되기 때문에 기존 Java 개발 환경에서 그대로 사용 가능하며 파일 확장자는
kt
이다.
public class ~~
와 같은 키워드 생략 가능fun main()
키워드로 클래스의 main 메소드 구현main()
메소드에 static
키워드 사용하지 않음var temp1 = 5L // == long temp1 = 5L;
val temp2 = 10L // == final long temp2 = 10L;
fun
이름(파라미터 이름: 타입 = 기본값): 반환 타입 {} 형태로 정의//Java
long num1 = 5L;
final long num2 = 10L;
//Kotlin
//연산을 사용할 때는 Reference Type 사용 권장
var num1: Long = 5L
val num2: Long = 10L
println(num1 + num2)
//nullable 변수는 타입 뒤에 ?를 추가
var num1: Long? = 5L
var num2: Long = 10L
num1 = null
num2 = null //에러
fun someFunction(param: String?): String {
//함수 매개변수에서 null 가능 여부 확인
return param.toUpperCase() //에러
}
//null-safe 문법
var str:String? = null
println(str?.length) //null 출력
println(str?.length ?: 0) //0 출력
println(str!!.length) //컴파일러에게 null이 아니라고 명시
---
//Java
@Nullable
public String getName() {
return name
}
//Kotlin
println(xxx.getName().length) //에러
//객체 초기화 시 new 키워드 사용하지 않음
val person = Person("이름")
val num1 = 5 //int
val num2 = 10L //long
println(num1 + num2) //에러
println(num1.toLong() + num2)
val num3 = 3.0f //float
val num4 = 6.0 //double
println(num3 + num4) //에러
println(num3.toDouble() + num4)
---
//Java
void compare(Object obj) {
if(obj instanceof Person) {
Person person = (Person) obj;
}
}
//Kotlin
fun compare(obj: any) {
if(obj is Person) { //부정의 뜻은 !is
val person = obj as Person //타입 캐스팅, nullable은 as?
}
}
any?
와 같이 입력//Java
System.out.println("%s - %s".formatted(param1, param2);
String name = "abcd";
System.out.println(name.charAt(1));
//Kotlin
println("${param1} - ${param2}") //중괄호 생략 가능
val name = "abcd"
println(name[1])
compareTo
함수를 사용함===
, 값 비교 시 ==
사용equals
<=> ==
Kotlin==
<=> ===
Kotlin==
사용 시 내부적으로는 equals
함수를 사용함operator fun plus(...): Long {
return ... + ...
}