본문 바로가기

Programming Language/Kotlin

Kotlin 소개 및 Java와의 차이점 알아보기


What is Kotlin?

# JetBrains에서 2011년 공개한 프로그래밍 언어
# Java와 상호 호환 
# JVM, Android, 브라우저에서 동작
# coroutines 지원
# Null 안정성

# 코틀린 공식 사이트 : https://kotlinlang.org/
# 코틀린 온라인 공부 사이트 : https://play.kotlinlang.org

Android와 Kotlin의 관계

# Java와 100%호환을 통해 Android API그대로 사용가능
# Ant, Maven, Gradle build 시스템 사용가능
# Android studio를 통한 Java → Kotlin 변환도구 제공

Java vs Kotlin

java와 코틀린과 차이점을 정리해 보았다. 각 언어의 버젼별로, 상황별로 다른점이 많으나, 그 중 몇가지 중점적으로 봐야할 것을 뽑아 보았다.


함수 표현

// Java
[public/private/protected] ReturnType 함수이름(Type 변수들){
  [return]
}

// Kotlin
[public/private/protected] fun 함수이름(Type 변수들): ReturnType{
  [return]
}
기존 Java의 표현식과 다르게 함수이름 앞에 fun이라는 예약어를 붙이고 함수이름을 적어 선언한다.

변수 표현

// Java
[public/private/protected] [static/final] Type 변수이름 [= <초기값>]
// Kotlin
[public/private/protected] [var/val] 변수이름[:Type] [= <초기값>]

// Java
String va1 = "hello"; // mutable, read and write possible
final String va2 = "world"; // immutable, read only
// Kotlin
var va1 = "hello" // mutable, read and write possible
val va2 = "world" // immutable, read only
var과 val로 변수를 선언하는데, val은 immutable, var은 mutable 변수이다.

Null 처리

// Java
String nu1 = "hello";
nu1 = null;

// Kotlin
var nu1 :String = "hello"
n1 = null // <---error:Null can not be a value of non-null type String
var nu2 :String? = "hello"
n2 = null // possible
변수 type뒤에 물음표를 붙임으로서 null 허용/비허용 여부를 선언할 수 있다. null이 비허용된 변수의 경우 null이 절대로 들어갈 수 없다.

Class 표현법

// Java
public class Person {
  private final String name;
  public Person(String name){
    this.name = name;
  }
}

// Kotlin
class Person constructor(val name: String){}
constructor 예약어를 통해 생성과 동시에 지정되어야 하는 매개변수에 대해 선언 가능하다.

VO 표현법

// Java
public class User {
  private String name;
  private int age;
  public int getAge(){
    return age;
  }
  public void setAge(int age){
    this.age = age;
  }
  public Stirng getName(){
    return name;
  }
  public void setName(String name){
    this.name = name;
  }
}

// Kotlin
data class User(var name:String, var age:Int)
// automatically make .equals(), .hashCode(), .toString(), .copy(), .componentN()
기존 java에서 value object를 선언하게 되면 oop의 원칙에 따라 매개변수는 private로 감추고 getter/setter을 통해 각 변수를 접근하였으나, Kotlin에서는 데이터 클래스를 사용하여 vo로 자주 사용하는 각종 함수를 자동으로 제공한다.

End of Document




반응형