코틀린에서 자주 사용하는 문법 String Template
2022. 1. 21. 20:13
프로그래밍/Kotlin
String Template 변수를 출력하고 싶을 때 $를 사용 val name = "nana" println("my name is $name I'm good") 만약 변수 뒤 띄어쓰기를 하기 싫다면 대괄호{}를 사용해서 구분해야 함 val name = "nana" println("my name is ${name}I'm good")
확장 함수와 확장 프로퍼티
2022. 1. 20. 20:09
프로그래밍/Kotlin
메소드를 다른 클래스에 추가: 확장 함수와 확장 프로퍼티 기존 코드와 코틀린 코드를 자연스럽게 통합하는 것은 코틀린의 핵심 목표 중 하나임 이런 기존 자바 API를 재작성하지 않고도 코틀린이 제공하는 여러 편리한 기능을 사용할 수 는 없을까? 바로 확장 함수가 그런 역할을 해줄 수 있음 개념적으로 확장 함수는 단순함 확장 함수는 어떤 클래스의 멤버 메소드인 것처럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수임 문자열의 마지막 문자를 돌려주는 확장 메소드를 추가해보자 package strings fun String.lastChar(): Char = this.get(this.length - 1) 확장 함수를 만들려면 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이기만 하면 됨 클래스 ..
코틀린에서 컬렉션 만들기
2022. 1. 19. 20:54
프로그래밍/Kotlin
코틀린에서 컬렉션 만들기 컬렉션을 만드는 방법은 자바와 비슷함 val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") 코틀린이 자체 컬렉션을 제공하지 않는 이유? 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기가 훨씬 더 쉽기 때문 때문에 자바에서 코틀린 함수를 호출하거나 코틀린에서 자바 함수를 호출할 때 자바와 코틀린 컬렉션을 서로 변환할 필요가 없음 하지만 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있음 fun main(args: Array) { val strings = listOf("first", "second", "..
코틀린의 예외 처리
2022. 1. 12. 20:26
프로그래밍/Kotlin
코틀린의 예외 처리 코틀린의 예외처리는 자바나 다른 언어의 예외 처리와 비슷함 함수는 정상적으로 종료할 수 있지만 오류가 발생하면 예외를 던질 수 있음 // 조건이 참이면 number의 값이 초기화되고 거짓이면 초기화되지 않고 throw를 호출한다. val number = try { Integer.parseInt(reader.readLine()) } catch (e: NumberFormatException) { return // 예외가 발생한 경우 catch 블록 다음의 코드는 실행되지 않는다. } try, catch, finally 자바 코드와 가장 큰 차이는 throws절이 코드에 없다는 점 자바에서는 함수를 작성할 떄 함수 선언 뒤에 throws IOException을 붙여야 함 (IOExption..
코틀린 기초(while과 for)
2022. 1. 11. 20:23
프로그래밍/Kotlin
대상을 이터레이션: while과 for 루프 코틀린의 while루프는 자바와 동일함 for는 자바의 for-each 루프에 해당하는 형태만 존재함 수에 대한 이터레이션: 범위와 수열 100부터 거꾸로 세되 짝수만 출력 👇 fun main(args: Array) { for (i in 100 downTo 1 step 2) { print(fizzBuzz(i)) } } 여기서는 증가 값 step을 갖는 수열에 대해 이터레이션함 증가 값을 사용하면 수를 건너 띌 수 있음 증가 값을 음수로 만들면 정방향 수열이 아닌 역방향 수열을 만들 수 있음 이 예제에서 100 downTo 1은 역방향 수열을 만듦. in으로 컬렉션이나 범위의 원소 검사 in 연산자를 사용해 어떤 값이 범위에 속하는지 검사할 수 있음 반대로 !i..
코틀린 기초(enum과 when)
2022. 1. 10. 20:17
프로그래밍/Kotlin
enum 클래스 정의 자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아님 enum 클래스 안에도 프러퍼티나 메소드를 정의할 수 있음 enum class Color( val r: Int, val g: Int, val b: Int ) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255), INDIGO(75, 0, 130), VIOLET(238, 130, 238); fun rgb() = (r * 256 + g) * 256 + b } enum 클래스 안에 메소드를 정의하는 경우 반드시 enum 상수 목록과 메소드 정의 사이에 세미콜론을 넣어야 함 when으로 enum 클래스 다루기 자바의..
코틀린 기초(클래스와 프로퍼티)
2022. 1. 6. 20:21
프로그래밍/Kotlin
클래스 자바 Person 클래스 👇 public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } } 자바-코틀린 변환기를 써서 위의 Person 클래스를 코틀린으로 변환 👇 class Person(val name: String) 자바를 코틀린으로 변환한 결과, public 가시성 변경자가 사라졌음 코틀린의 기본 가시성은 public이므로 이런 경우 변경자를 생략해도 됨 프로퍼티 자바에서는 필드와 접근자(getter, setter)를 한데 묶어 프로퍼티라고 부르며, 프로퍼티라는 개념을 활용하는 프레임워크가 많음 코틀린은 ..
코틀린 기초(함수와 변수)
2022. 1. 5. 20:03
프로그래밍/Kotlin
Hello, World! 'Hello, World!' 프린트 예제 👇 fun main(args: Array) { println("Hello, world!") } 단순한 코드지만 코틀린의 여러가지 특성을 보여줌 함수를 선언할 때 fun 키워드를 사용 파라미터 이름 뒤에 그 파라미터의 타입을 씀 함수를 최상위수준에 정의할 수 있다. (자바와 달리) 꼭 클래스 안에 함수를 넣어야 할 필요가 없음 배열도 일반적인 클래스와 마찬가지다. 코틀린에는 자바와 달리 배열처리를 위한 문법이 따로 존재하지 않음 System.out.println 대신에 println이라고 씀. 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공 최신 프로그래밍 언어 경향과 마찬가지로 줄..