코틀린은 다른 언어와는 다르게 main함수를 fun main(args : Array){ } 로 선언한다.
이는 자바와 비슷하면서 다르다.
코틀린의 기본 특징
data classPerson{valname:String,valage:Int?=null}funmain(args:Array<String>){valpersons=listOf(Person("Alice")Person("Bob",age=29))valoldest=persons.maxBy{it.age?:0}println("The oldest is : $oldest")}//참고 : https://incheol-jung.gitbook.io/docs/study/kotlin-in-action/1
코틀린은 장황했던 Java와 비교하면 눈물날 정도로 간결한 문법을 제공한다. 간결한 문법을 제공하면서도 런타임 오버헤드가 거의없다.
오버헤드 없는 널 안정성을 제공한다.
위의 코드에서 예시를 들어보자
valage:Int?=null
Kotlin의 변수는 Nullable(널 값 사용 가능)과 NonNull(널 값 사용 불가)로 나뉘는데, 변수 선언시 “?”를 붙여 Nullable로 만들 수 있다.
vals:String?=null//널이 될 수 있음vals2:String=""// 널이 될 수 없음
예외처리를 강제하지 않는다. JSON Object를 만들 때 눈물이 난다…
모든 함수가 리턴값을 가진다
확장함수, 연산자 오버로딩을 지원한다.
예를 들어 int형을 확장해 ‘i = 3 power 4’같은 식으로 새 연산자를 만들 수 있다.
==, != 연산자가 객체의 identity가 아닌 내용물을 비교한다.Java에서는 String i와 String j가 같은 문자열을 담고 있어도 가리키는 객체의 메모리 주소는 다를 수 있으므로 i == j는 false가 될 수 있다.
따라서 객체의 내용물을 비교하려면 equals() 함수를 사용해야 한다. 하지만 Kotlin에서 ==는 equals()와 똑같이, 즉 content equality로 작동한다.
따라서 i == j는 true다. Java처럼 identity equality를 비교하려면 ===, !==를 쓰면 된다.