클래스 (Class) 일단 클래스를 알기 전에 코틀린 파일의 특징부터 알아야 합니다. 코틀린 파일은 xxx.kt 형태로 작성하며 안쪽 구조는 java와는 다소 큰 차이가 있습니다. 우선 메소드가 kt 파일 내에 클래스의 존재와 관련없이 존재할 수 있습니다. // 일반 클래스 class Test(val test: Int) { } // 클래스와 떨어진 함수. fun test() { println("test") } 위의 일반 클래스에서 (val test: Int) 표현은 생략된 생성자 표현입니다. 생성자는 constructor 키워드로 아래와 같이 표현할 수도 있습니다. 하지만 표현상 constructor를 제외한 표현이 더욱 간소화되기도 하고 가독성도 좋기 때문에 대체로 생략하는 편입니다. class Tes..
자바에서 Exception은 아래의 구조를 가진다. 코틀린도 이와 별반 다르지 않다. Error는 말그대로 프로그램을 더이상 운영할 수 없는 정도의 아주 크리티컬한 에러이고, Exception은 우리가 catch 해야할 Exception의 유형들이다. 그 중에서 CheckedException을 처리하는 방법이 Kotlin과 Java와의 차이가 있다. class Test { public static void main(String[] args) { Thread.sleep(1) } } Java에서 위 코드는 컴파일 에러를 뱉는다. 왜냐하면 sleep 메소드는 checkedException을 전파하는 메소드이고 메인 메소드가 이에 대해서 별도로 처리하지 않았기 때문이다. fun main() { Thread.sl..
Null 참조의 위험성 자바를 포함한 많은 프로그래밍 언어에서 가장 많이 발생하는 예외가 바로 NullPointerException일 것입니다. 줄여서 NPE라고도 합니다. Null을 발명한 토니호어는 1965년 null을 발명한 것이 자신의 1조원짜리 실수였다고 고백합니다. 왜냐하면 null로 인해서 발생한 오류와 피해가 수십년간 수십억 달러에 달하기 때문이라고 합니다. 자바에서는 이러한 Null로 인해 발생하는 NPE를 줄이기 위해 Optional 이라는 클래스 타입을 제공하기 시작했습니다. 하지만 자바에서 아무리 Optional을 사용한다고 하더라도 Optional은 타겟값을 감싸는 클래스이기 때문에 그에 대한 오버헤드가 발생하고 컴파일을 하는 단계에서는 문법적 요소만 통과한다면 Null 가능성에 ..
if 문 가장 기본적인 형태의 if 문 val job = "Backend Developer" if (job == "Backend Developer") { println("백엔드 개발자") } else if (job == "Frontend Developer") { println("프론트엔드 개발자") } else { println("개발자 아님") } if문은 표현식이다. 따라서 Java에서와는 다르게 동작한다. 대입이 가능하다. val age : Int = 10 val str = if (age > 10) { "성인" } else { "아이" } 자바에서는 str = "성인", str = "아이" 처럼 if문 안에 대입문을 넣어주었어야 할텐데 코틀린에서는 표현식으로 동작하기 때문에 위와 같은 대입식이 가능..
코틀린은 자바보다 다양한 함수 사용 스타일을 보여준다. default Parameter나 named argument를 봤을 때는 자바를 사용하는 실무에서 마주칠법한 오류에 많은 도움이 될 것 같아보였다. 다른 내용들은 기본적인 내용이므로 코틀린을 많이 작성하다 보면 잘 익어갈만한 내용으로 보인다! 기본적인 함수 fun sum(num1 : Int, num2 : Int) : Int { return num1 + num2 } 표현식 스타일 함수 fun sum2(num1 : Int, num2 : Int) : Int = num1 + num2 표현식과 반환 타입을 생략 가능한 함수 fun sum3(num1 : Int, num2 : Int) = num1 + num2 (단계가 어째 자바 람다식 축약하는 것 같다...) ..
안녕하세요. 오늘은 코틀린 문법공부 1일차 : 코틀린의 주석, 변수와 자료형을 선언하는 방법들에 대해서 정리해보겠습니다. 변수, 자료형 문법은 가장 기본이 되는 요소이기 때문에 다양한 케이스를 알아야 하고 반드시 기초를 잡아야합니다. 주석 코틀린은 자바와 비슷한 주석체계를 가지고 있습니다. 예를 들어 하나의 라인의 주석을 사용하는 것은" // " 이며, 여러 라인의 주석을 사용하는 것은 " /* */ " 입니다. 주석은 아래의 예제를 설명하는 첨언으로 사용해보면서 나가겠습니다. 변수 코틀린의 변수선언은 많은 자바개발자들이 사용하고 있는 자바8버전(jdk 1.8)과는 많이 상이합니다.(고버전 자바와는 흐름이 비슷하기도 합니다.) 일단 두가지 선언방법이 존재합니다. var a: Int =1 val b:Int..
for 반복문 소스코드 예제 fun forLoop(){ println("[for] 반복문") val items = listOf("apple", "banana", "kiwi") // A for(item in items) { println(item) } // B for(index in 0..(items.size-1)) { println("이건 item at $index is ${items[index]}") } // C for(index in 0 until items.size) { println("이건 item at $index is ${items[index]}") } // D for(index in items.indices) { //indices -> 0..2 println("item at $index is..
이번에는 코틀린의 공식홈페이지에 있는 Getting Started에 정리된 내용을 제가 이해한대로 정리해보았습니다. 코틀린 공식홈페이지 Getting Started 주소는 아래와 같습니다. https://kotlinlang.org/docs/reference/basic-syntax.html Basic Syntax - Kotlin Programming Language kotlinlang.org 일단, 모든 내용을 테스트할 수 있는 main 함수입니다. fun main(){ println(sum(10, 20)) println(sum2(10, 20)) printSum(10, 20) printSumNoUnit(10, 20) println("1과 10중 최댓값은 ${maxOf(1,2)}입니다."); println(..