본문 바로가기

공부방/Kotlin

(9)
코틀린에서 클래스를 다루는 방법 코틀린에서 클래스를 만드는 방법 코틀린에서는 클래스를 어떻게 만들까요? 코틀린에서 클래스 만드는 방법을 알아보기 위해 자바로 클래스를 만들고 그 코드를 코틀린으로 변환해보면서 연습해보도록 하겠습니다. [Java] 일반적인 자바 클래스입니다. name과 age를 필드 변수로 가지고 있으면서 getter와 setter를 구현해준 모습입니다. 이것을 코틀린으로 변환해 보겠습니다. package lec09; public class JavaPerson { // name은 변경할 수 없다고 가정합니다. private final String name; private int age; public JavaPerson(String name, int age) { this.name = name; this.age = age; ..
코틀린에서 함수를 다루는 방법 함수 선언 문법 코틀린에서는 함수를 어떻게 선언하는지에 대해서 알아봅시다. 두 변수 a와 b의 크기를 확인하고 큰 값을 return해주는 함수입니다. 같은 기능을 자바로 구현한 결과와 코틀린으로 구현한 결과를 비교해보겠습니다. [Java] 평범한 자바 코드입니다. 이러한 코드를 코틀린으로 구현하다면 어떻게 해야 할까요? public class Lec08Main { public int max(int a, int b) { if (a > b) { return a; } return b; } } [Kotlin] 접근제한자 명시해 놓지 않으면 기본으로 public 접근제한자가 적용됩니다. 반환 타입도 Unit 인 경우는 생략 가능합니다. fun max(a: Int, b: Int): Int { return if (a..
코틀린에서 예외를 다루는 방법 try - catch try-catch 문법은 자바와 코틀린 모두 동일합니다. 다만 코틀린에서는 try-catch 문법을 Expression으로 취급한다는 것에 약간의 차이가 있습니다. [Java] [Kotlin] Checked Exception, Unchecked Exception 코틀린에서는 checked exception이 존재하지 않습니다. 코드를 통해 확인해 보도록 하겠습니다. [Java] 여기 파일을 읽어내는 코드가 있습니다. 자바에서는 IOException 예외처리를 진행해야 코드를 실행할 수 있습니다. 코틀린에서는 어떨까요? public class Lec07Main { public static void main(String[] args) throws IOException { File cur..
코틀린에서 반복문을 다르는 방법 1. for - each 문 [Java] 리스트를 만들고, 리스트 안에 있는 값들을 출력하는 코드가 있습니다. 이 코드를 코틀린으로 변경해보면 어떻게 될까요? public class Lec06Main { public static void main(String[] args) { List numbers = Arrays.asList(1L, 2L, 3L); for (long number : numbers) { System.out.println(number); } } } [Kotlin] 향상된 for문도 Java와 크게 차이나는 부분은 없습니다. 컬렉션을 만드는 방법이 다릅니다. 이터레이터 안에서 콜론(:) 대신 in을 사용합니다. Java와 동일하게 iterable이 구현된 타입이라면 모두 들어갈 수 있습니다...
코틀린에서 조건문을(제어문) 다루는 방법 1. if문 [자바] 여기 int가 0보다 작다면 exception을 뱉어내는 메서드가 있습니다. 이런 코드를 코틀린으로 변경하려면 어떻게 해야할까요? private void validateScoreIsnotNegative(int score) { if (score < 0) { throw new IllegalArgumentException(String.format("%s는 0보다 작을 수 없습니다.", score)); } } [코틀린] 디테일한 부분에서는 다른점이 있지만, 크게 달라지는 부분은 없습니다. 다른점이라고 해도 If문에서 달라지는 것은 아니죠. 함수에서 Unit (void가 생략됨) 함수 만들때 fun을 사용 exception 던질 때 new 가 생략됨 fun validateScoreIsNotN..
코틀린에서 연산자를 다루는 방법 1. 단항 연산자 / 산술 연산자 자바와 코틀린 완전 동일하게 사용할 수 있습니다. 단항 연산자 ++, -- 산술 연산자 +, 0, *, /, % 산술 대입 연산자 +=, -=, *=, /=, %= 2. 비교 연산자 자바에서는 객체에 있는 값을 이용한 비교를 할 때 compareTo를 override로 구현하고 이를 호출해서 비교합니다. 아래 JavaMoney라는 객체가 있습니다. public class JavaMoney implements Comparable { private final long amount; public JavaMoney(long amount) { this.amount = amount; } @Override public int compareTo(@NotNull JavaMoney o) ..
3. 코틀린에서 Type을 다루는 방법 1. 기본타입 코틀린에서는 선언된 기본값을 보고 타입을 추론한다. fun main() { val number1 = 3 // Int var number2 = 3L // Long } 자바: 기본 타입간의 변환은 암시적으로 int는 4byte, long은 8byte로 long이 더 크니까 타입 변환이 가능합니다. int -> long 암시적으로 변경 가능 public class Lec03Main { public static void main(String[] args) { int number1 = 4; long number2 = number1; System.out.println(number1 + number2); } } 코틀린: 기본 타입간의 변환은 명시적으로 반면 코틀린은 암시적으로 타입 변환이 불가능합니다...
코틀린에서 null을 다루는 방법 1. 자바 코드 예시 아래의 자바 코드를 살펴봅시다. 문제가 없는 코드라고 할 수도 있겠으나, 해당 코드는 null 값이 들어왔을 경우에는 NPE가 발생합니다. public class Lec02Main { // str이 null일 수 있기 때문에 NPE 위험성이 존재 public boolean startsWithA(String str) { return str.startsWith("A"); } } 2. 자바로 문제 해결 NPE를 해결하기 위해서 자바 코드는 아래와 같이 대처할 수 있을겁니다. str 값이 null인 경우 exception 처리 str 값이 null인 경우 null return str 값이 null인 경우 false return 다음과 같이 구현할 수 있을 것입니다. public class ..