코틀린의 예외 처리 방식 코틀린에서 예외가 발생했을 때 호출 스택을 올라가면서 예외 처리가 나올 때 까지 예외를 다시 던진다. fun checkPercentage(percentage: Int) { if (percentage !in 0..100) { throw IllegalArgumentException( "퍼센트는 0이상 100이하의 숫자여야 합니다" ) } } 위의 함수는 인자로 받은 percentage의 값을 검사하는 함수이다. 코틀린에서는 예외를 던질 때 throw 키워드를 사용하며 자바와 달리 new 키워드를 붙이지 않는다. 예외가 발생하면 예외의 종류와 함께 메시지가 출력된다. val percentage = if(number in 0..100) number else throw IllegalArg..
코틀린의 while은 자바와 동일하다. for는 자바의 for-each의 형태와 비슷하고 for in 와 같은 형식을 가진다. while while (조건) { /*...*/ } do { /*...*/ } while (조건) 코틀린에는 while과 do-while 루프가 있고 둘 다 자바와 동일한 방법으로 사용하면 된다. for java에서 for문은 초깃값, 증가 값, 최종값이 있지만 코틀린은 없다. 대신 코틀린은 범위를 사용한다. 범위는 두 값으로 이뤄진 구간이고 시작값..끝값의 형태로 범위를 생성한다. 이 범위는 시작값과 끝값 모두 포함한다. fun main() { for (i in 1..100) { print("$i ") } } 위의 코드는 1부터 100까지 출력하는 코드이다. 양 끝값이 모두 출..
이 글은 코틀린 공식문서를 정리한 것입니다. Number 정수 코틀린의 정수는 4가지 타입이 있고, 각 타입마다 다른 범위를 가지고 있다. 코틀린은 동적 타이핑을 지원하는데 타입을 지정하지 않은 경우 기본적으로는 Int 타입이 된다. 만약 Int 타입의 범위를 벗어난 경우에는 Long 타입이 된다. Int 타입을 벗어나지는 않지만 Long 타입으로 지정하고 싶은 경우에는 숫자뒤에 문자 'L'을 붙여주면 된다. val one = 1 // Int val threeBillion = 3000000000 // Long val oneLong = 1L // Long val oneByte: Byte = 1 one과 threeBillion을 보면 범위에 따라 동적 타이핑이 어떻게 되는지 알 수 있다. oneLong을 보..
코틀린에서 enum을 선언할 때 자바보다 더 많은 키워드를 선언해야 한다. Color라는 enum 클래스를 선언할 때 java에서는 enum Color로 선언하지만 코틀린에서는 enum class Color과 같이 선언을 하기 때문이다. 코틀린에서 enum은 소프느 키워드(soft keyword)이다. 소프트 키워드는 변수 혹은 인자의 이름으로 사용가능한 키워드를 지칭한다. enum은 class 앞에서만 특별한 의미를 가지고 있고 다른 상황에서는 이름으로 사용이 가능하다. enum class Color { RED, YELLOW, GREEN, BLUE, VIOLET } 간단한 enum 클래스는 위와 같이 정의한다. enum class Color( val r: Int, val g: Int, val b: In..
record의 도입 record는 Java 14 버전부터 새롭게 도입된 키워드이다. enum과 마찬가지로 record도 제약이 있는 클래스의 한 종류이다. 데이터를 변경하지 않고 생성자와 접근자 메서드를 포함하는 plain data carrier라고 오라클 공식문서에서 설명한다. Spring의 DTO와 같이 객체 간에 불변 데이터를 전달하는 일은 빈번한다. 불변 데이터를 전달하기 위해 사용하는 DTO 객체의 경우에는 setter 메서드 같은 데이터를 변경하는 메서드를 작성하지 않고 생성자로 인스턴스가 생성될 때만 값을 초기화하고 필드 앞에 final을 붙이는 방식으로 구현했었다. 이는 record를 통해서 대체할 수 있다. record를 class로 변환 public record Rectangle(flo..
동등 연산자(==)을 사용한 비교의 문제점 Integer integer1 = 100; Integer integer2 = 100; System.out.println(integer1 == integer2); // true 위의 코드를 실행했을 때 integer1과 integer2는 동일하다고 나온다. Integer integer1 = 1_000; Integer integer2 = 1_000; System.out.println(integer1 == integer2); // false integer1, integer2 값이 4였을 때와는 달리 위의 코드는 integer1과 integer2를 비교했을 때 다르다는 결과가 출력된다. Integer 값을 동등 연산자(==)을 사용했을 때 정확하게 비교할 수 있는 값은..
Java와 Kotlin의 클래스 public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } } 위는 Java 문법으로 작성된 Person 클래스이다. 필드로 문자열 name을 가지고 생성자와 getter를 가진다. 이 클래스를 Kotlin으로 변환을 해보자. class Person(val name: String) 코틀린 코드로 변환된 Person 클래스이다. 코틀린은 기본적으로 public 가시성을 가진다. 따라서 public은 생략가능하다. IntelliJ에서 Java → Kotlin 변환 코틀린 코드로 변환하고 싶..
이 글은 이펙티브 자바를 읽고 정리한 글입니다. 클래스의 인스턴스를 생성하는 방법 public 생성자 정적 팩터리 메서드 (static factory method) 클래스는 public 생성자 외에도 정적 팩터리 메서드를 제공하여 객체를 생성할 수 있게 해준다. 정적 팩터리 메서드의 장점 1. 이름을 가질 수 있다 public 생성자를 사용해서 인스턴스를 생성할 때 생성자와 생성자에 넘기는 매개변수로는 객체의 특성을 제대로 설명하기 어렵다. new BigInteger(int, int, Rnadom)과 BigInteger.probablePrime으로 BigInteger 객체를 생성한다고 했을 때, 후자의 이름을 보면 소수인 BigInteger를 생성하는 것을 알 수 있다. 하나의 시그니처(접근 제어자, 클..
Hello, Kotlin! fun main(args: Array) { println("Hello, Kotlin") } 위 코드는 코틀린에서 "Hello, Kotlin"을 출력하는 코드이다. 위의 코드에서는 다음과 같은 코틀린의 특성을 발견할 수 있다. 함수 선언시 fun 키워드를 사용한다. 파라미터 뒤에 파라미터의 타입을 쓴다. 함수가 클래스 밖에서도 존재할 수 있다. 배열은 클래스(Array 클래스)로 표현된다. System.out.println 대신 println을 사용한다. 표준 자바 라이브러리 함수를 간결한 문법으로 제공하는 wrapper를 코틀린 표준 라이브러리가 제공한다. 줄 끝에 세미콜론(;)을 붙이지 않아도 된다. 함수 fun max(a: Int, b: Int): Int { return i..
코틀린의 특성 특성 1: 대상 플랫폼 - 서버, 안드로이드 등 자바가 실행되는 모든 곳 코틀린의 주목적은 자바가 실행되고 있는 곳에 적합하고 간결하고 생산적이며 안전한 언어를 제공하는 곳이다. 자바는 Spring 같은 백엔드나 안드로이드의 모바일 애플리케이션을 제작하는 데 사용되는데 코틀린은 자바의 역할을 대체해 줄 수 있다. 특정 2: 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입(statically typed) 지정 언어이다. 정적 타입의 특징은 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 객체의 필드나 메서드를 사용할 때 컴파일러가 타입을 검증해준다. 자바 10부터 자바도 var 키워드를 사용해서 변수의 타입을 명시할 필요가 없다. 코틀린도 자바 var과 같이 코틀린 컴파일..
- Total
- Today
- Yesterday
- pm.test
- go 특징
- 1차 인터뷰
- git
- Kotlin In Action
- string
- postman
- 코딩테스트
- postman collection
- python3
- squash merge
- solidity
- 네이버 2022 공채
- postman tests
- Basic Type
- Kotlin
- Python
- 2차 인터뷰
- hashcode
- downTo
- DGS Framework
- 주생성자
- github
- 확장 함수
- 코틀린
- pm.expect
- java
- Squash and merge
- graphql
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |