You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 코 틀린 기초 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.Experience-Porthcawl.com team, along with other related topics such as: 코 틀린 기초 코틀린 강좌, 코 틀린 리플렉션, 코 틀린 세팅, 코 틀린 PDF, 코틀린 기초 강좌, 코 틀린 주석, 코 틀린 타입, 코 틀린 특징
[Kotlin] 코틀린 기초1 – 함수, 변수, 클래스, property, enum, when
- Article author: hororolol.tistory.com
- Reviews from users: 31062 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about [Kotlin] 코틀린 기초1 – 함수, 변수, 클래스, property, enum, when 코틀린 함수는 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정된다. 이런 함수를 종종 순수 함수(pure function)라고 부른다. …
- Most searched keywords: Whether you are looking for [Kotlin] 코틀린 기초1 – 함수, 변수, 클래스, property, enum, when 코틀린 함수는 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정된다. 이런 함수를 종종 순수 함수(pure function)라고 부른다. 1. 함수와 변수 함수 코틀린 함수는 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정된다. 이런 함수를 종종 순수 함수(pure function)라고 부른다. 이는 항상 같은 인자에 대해 같은 결과를 내..
- Table of Contents:
너와 나의 스토리
[Kotlin] 코틀린 기초1 – 함수 변수 클래스 property enum when 본문티스토리툴바
2장 코틀린 기초 – Incheol’s TECH BLOG
- Article author: incheol-jung.gitbook.io
- Reviews from users: 43274 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about 2장 코틀린 기초 – Incheol’s TECH BLOG 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공한다. 최신 프로그래밍 … …
- Most searched keywords: Whether you are looking for 2장 코틀린 기초 – Incheol’s TECH BLOG 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공한다. 최신 프로그래밍 … KOTLIN IN ACTION 2장을 요약한 내용입니다.
- Table of Contents:
Hello World!
함수
변수
더 쉽게 문자열 형식 지정 문자열 템플릿
프로퍼티
코틀린 소스코드 구조 디렉터리와 패키지
enum 클래스 정의
when으로 enum 클래스 다루기
when과 임의의 객체를 함께 사용
인자 없는 when 사용
스마트 캐스트 타입 검사와 타입 캐스트를 조합
리팩토링 if를 when으로 변경
수에 대한 이터레이션 범위와 수열
in으로 컬렉션이나 범위의 원소 검사
try catch finally
try를 식으로 사용
코틀린[Kotlin] #02_코틀린 기초(함수,클래스,프로퍼티,enum)
- Article author: doorbw.tistory.com
- Reviews from users: 46269 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about 코틀린[Kotlin] #02_코틀린 기초(함수,클래스,프로퍼티,enum) 문범우입니다. 이번 포스팅에서는 코틀린의 기초에 대해서 알아보도록 합니다. 구체적으로는 함수, 변수, 클래스, … …
- Most searched keywords: Whether you are looking for 코틀린[Kotlin] #02_코틀린 기초(함수,클래스,프로퍼티,enum) 문범우입니다. 이번 포스팅에서는 코틀린의 기초에 대해서 알아보도록 합니다. 구체적으로는 함수, 변수, 클래스, … 안녕하세요. 문범우입니다. 이번 포스팅에서는 코틀린의 기초에 대해서 알아보도록 합니다. 구체적으로는 함수, 변수, 클래스, 프로퍼티, enum에 대해서 학습합니다. 관련된 내용의 코드는 아래 주소에서 확인하..Back-end / DevOps / K8S / Java / Kotlin / Python / Database / Algorithm / etc
- Table of Contents:
코틀린[Kotlin] #02_코틀린 기초(함수클래스프로퍼티enum)
문 범 우
[신입 개발자 취업을 위한 가이드라인]티스토리툴바
Kotlin in Action. [2] 코틀린 기초
- Article author: velog.io
- Reviews from users: 17448 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about Kotlin in Action. [2] 코틀린 기초 코틀린 기초 함수 hello world 예시 함수 함수를 선언할때, fun키워드 사용. 파라미터 이름 뒤에 그 파라미터의 타입을 씀. …
- Most searched keywords: Whether you are looking for Kotlin in Action. [2] 코틀린 기초 코틀린 기초 함수 hello world 예시 함수 함수를 선언할때, fun키워드 사용. 파라미터 이름 뒤에 그 파라미터의 타입을 씀. 코틀린 기초
함수
hello world 예시 함수함수를 선언할때, fun키워드 사용.
파라미터 이름 뒤에 그 파라미터의 타입을 씀.
함수를 최상위 수준에 정의 할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣어야 할 필요가 없다.
코틀린에는 자바와 달리 배열 - Table of Contents:
kotlin
함수
변수
Class and Property(프로퍼티)
enum과 when
이터레이션 while for
코틀린의 예외 처리
Kotlin – 코틀린 기초
- Article author: ncucu.me
- Reviews from users: 45410 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about Kotlin – 코틀린 기초 코틀린 함수는 아래와 같은 모양새를 하고 있다. fun main (args: Array
) { println(“Hello World”) }. 함수 선언시 fun 키워드를 사용한다. … - Most searched keywords: Whether you are looking for Kotlin – 코틀린 기초 코틀린 함수는 아래와 같은 모양새를 하고 있다. fun main (args: Array
) { println(“Hello World”) }. 함수 선언시 fun 키워드를 사용한다. 함수와 변수 코틀린 함수는 아래와 같은 모양새를 하고 있다. fun main (args: Array ) { println(“Hello World”) } 함수 선언시 fun 키워드를 사용한다. 파라미터 명 뒤에 해당 파라미터의 타입을 명시한다. 함수.. - Table of Contents:
티스토리 뷰
함수와 변수
클래스와 프로퍼티
디렉터리와 패키지
enum 과 when
스마트 캐스트 – 타입 검사와 타입 캐스트 조합
while 과 for 루프
코틀린의 예외처리
정리
[코틀린/Kotlin] 기초 문법 정리 :: 하루플스토리
- Article author: haruple.tistory.com
- Reviews from users: 12214 Ratings
- Top rated: 3.4
- Lowest rated: 1
- Summary of article content: Articles about [코틀린/Kotlin] 기초 문법 정리 :: 하루플스토리 안녕하세요, 하루플입니다 안드로이드에서 자바가 아닌 코틀린으로 공부를 진행하면서 필요한 문법을 정리해보려합니다. 코틀린의 기초 사항을 정리 … …
- Most searched keywords: Whether you are looking for [코틀린/Kotlin] 기초 문법 정리 :: 하루플스토리 안녕하세요, 하루플입니다 안드로이드에서 자바가 아닌 코틀린으로 공부를 진행하면서 필요한 문법을 정리해보려합니다. 코틀린의 기초 사항을 정리 … 안녕하세요, 하루플입니다😊 안드로이드에서 자바가 아닌 코틀린으로 공부를 진행하면서 필요한 문법을 정리해보려합니다. 코틀린의 기초 사항을 정리하는 것이고 이후에 코딩테스트를 진행하면서 필요한 부분을..안드로이드 개발자 하루플 입니다
GitHub 놀러와주세요!😊 - Table of Contents:
관련글
티스토리툴바
코틀린 프로그래밍 기본 1 강좌소개 : 부스트코스
- Article author: www.boostcourse.org
- Reviews from users: 10703 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about 코틀린 프로그래밍 기본 1 강좌소개 : 부스트코스 구글에서 지정한 안드로이드 공식언어 코틀린의 기본 문법과 다양한 함수를 다루는법 … 객체 지향 프로그래밍, 코틀린 라이브러리 등 코틀린의 기초를 빈틈없이 . …
- Most searched keywords: Whether you are looking for 코틀린 프로그래밍 기본 1 강좌소개 : 부스트코스 구글에서 지정한 안드로이드 공식언어 코틀린의 기본 문법과 다양한 함수를 다루는법 … 객체 지향 프로그래밍, 코틀린 라이브러리 등 코틀린의 기초를 빈틈없이 . “코틀린 프로그래밍 기본 1, 황영덕, kotilin ,부스트코스 ,코틀린 ,android ,boostcourse ,안드로이드코틀린 프로그래밍 기본 1
- Table of Contents:
강좌 개요
코틀린 프로그래밍 기본 1
코틀린 인 액션 – Chapter2. 코틀린 기초
- Article author: gunju-ko.github.io
- Reviews from users: 16716 Ratings
- Top rated: 4.3
- Lowest rated: 1
- Summary of article content: Articles about 코틀린 인 액션 – Chapter2. 코틀린 기초 코틀린 인 액션 – 코틀린 기초. 기본 요소 : 함수와 변수. fun main(args: Array
) { println(“Hello World!”) }. … - Most searched keywords: Whether you are looking for 코틀린 인 액션 – Chapter2. 코틀린 기초 코틀린 인 액션 – 코틀린 기초. 기본 요소 : 함수와 변수. fun main(args: Array
) { println(“Hello World!”) }. 코틀린 인 액션 – 코틀린 기초 - Table of Contents:
기본 요소 함수와 변수
클래스와 프로퍼티
선택 표현과 처리 enum과 when
대상을 이터레이션 while과 for 루프
코틀린의 예외 처리
Android Kotlin 기초 | 학습 과정 | Android Developers
- Article author: developer.android.com
- Reviews from users: 146 Ratings
- Top rated: 4.5
- Lowest rated: 1
- Summary of article content: Articles about Android Kotlin 기초 | 학습 과정 | Android Developers Kotlin 코루틴을 사용하여 데이터베이스 작업을 기본 스레드에서 떨어뜨려 놓는 방법을 알아보고 앱 탐색에서 ViewModel … …
- Most searched keywords: Whether you are looking for Android Kotlin 기초 | 학습 과정 | Android Developers Kotlin 코루틴을 사용하여 데이터베이스 작업을 기본 스레드에서 떨어뜨려 놓는 방법을 알아보고 앱 탐색에서 ViewModel …
- Table of Contents:
기본 요건
이 교육 과정에는 어떤 내용이 포함되나요
투덜이의 리얼 블로그 :: [Kotlin] 코틀린의 기초#1 – 함수,변수,클래스,property
- Article author: tourspace.tistory.com
- Reviews from users: 49429 Ratings
- Top rated: 4.2
- Lowest rated: 1
- Summary of article content: Articles about 투덜이의 리얼 블로그 :: [Kotlin] 코틀린의 기초#1 – 함수,변수,클래스,property 이 글은 Kotlin In Action을 참고 하였습니다. 더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 본격적으로 코틀린의 코드에 대해서 설명합니다 … …
- Most searched keywords: Whether you are looking for 투덜이의 리얼 블로그 :: [Kotlin] 코틀린의 기초#1 – 함수,변수,클래스,property 이 글은 Kotlin In Action을 참고 하였습니다. 더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 본격적으로 코틀린의 코드에 대해서 설명합니다 … 이 글은 Kotlin In Action을 참고 하였습니다. 더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 본격적으로 코틀린의 코드에 대해서 설명합니다. 2.1 기본요소: 함수, 변수 2.1.1 Hello w..
- Table of Contents:
네비게이션
[Kotlin] 코틀린의 기초#1 – 함수변수클래스property사이드바
검색
티스토리툴바
See more articles in the same category here: https://toplist.Experience-Porthcawl.com/blog.
[Kotlin] 코틀린 기초1
반응형
1. 함수와 변수
함수
코틀린 함수는 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정된다. 이런 함수를 종종 순수 함수(pure function)라고 부른다. 이는 항상 같은 인자에 대해 같은 결과를 내놓는다.
main 함수는 다음과 같이 생겼다.
fun main(args: Array
) { } Hello world를 출력해보자. main 함수에 println()를 이용해 ‘hello world’ string을 출력할 수 있다.
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util.println fun main(args: Array
) { println(“Hello World!”) // output: Hello World! } 이번에는 두 값을 받아, 둘 중 큰 값을 반환하는 함수를 만들어보자. 변수는 다음과 같이 정의할 수 있다. fun ‘메서드 이름'(‘변수 이름’: ‘변수 타입’): 반환형 {} max1(), max2(), max3() 모두 동일하게 동작하는 함수이다. max3처럼 코틀린은 간결하게 함수를 표현할 수 있다.
fun max1(a: Int, b: Int): Int { if (a > b) return a else return b } fun max2(a: Int, b: Int): Int { return if (a > b) a else b } fun max3(a: Int, b: Int): Int = if (a > b) a else b fun main(args: Array
) { println(max1(2, 3)) println(max2(2, 3)) println(max3(2, 3)) } 변수
코틀린에서는 타입 지정을 생략하는 경우가 흔하다.
하지만 원한다면 타입을 명시할 수도 있다.
예:
val strVal = “string” val intVal = 42 val intVal2: Int = 42
하지만, 초기화 식을 사용하지 않고 변수를 선언하려면 변수 타입을 반드시 명시해야 한다.
val intVal: Int intVal = 42
변경 가능한 변수와 변경 불가능한 변수 변수 선언 시 사용하는 키워드는 다음과 같이 2가지가 있다. val 변경 불가능한(immutable) 참조를 저장하는 변수이다. val로 선언된 변수는 일단 초기화하고 나면 재대입이 불가능하다. 자바로 말하면 final 변수에 해당한다. var 변경 가능한(mutable) 참조다. 언제든지 변수의 값을 바꿀 수 있다. 자바로 말하면 일반 변수에 해당한다.
val 변수는 블록을 실행할 때 정확히 한 번만 초기화돼야 한다. 하지만 어떤 블록이 실행될 때 오직 한 문장에서만 초기화됨을 컴파일러가 확인할 수 있다면 조건에 따라 val 값을 다른 여러 값으로 초기화할 수도 있다.
val message: String if (canPerformOperation()) { message = “Success” } else { message = “Failed” }
val 참조 자체는 불변일지라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다.
val languages = arrayListOf(“Java”) languages.add(“Kotlin”) println(languages) // output: [Java, Kotlin]
문자열 형식 지정
문자열 리터럴의 필요한 곳에 변수를 넣을 수 있다.
val world = “World” println(“Hello $world”) // output: Hello World val helloWorld = arrayListOf(“Hello”) helloWorld.add(“World”) println(“${helloWorld[0]} ${helloWorld[1]}”) // output: Hello World println(“Hello ${if (helloWorld.size>1) helloWorld[1] else “everyone”}”) // output: Hello World
2. 클래스와 프로퍼티
클래스
간단한 Java 클래스 Person이 있다.
public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } }
이를 Kotlin 클래스로 변환하면 다음과 같다. 코틀린의 기본 가시성은 public이다.
class Person(val name: String)
프로퍼티(Property)
자바에서는 필드와 접근자를 한데 묶어 프로퍼티라고 부른다. 접근자 메서드: getter, setter
클래스 안에서 변경 가능한 프로퍼티 선언해보자
class Person( val name: String, // getter만 만듦 var isMarried: Boolean // setter, getter 다 만듦 ) fun main(args: Array
) { val person = Person(“Bob”, true) println(person.name) // output: Bob println(person.isMarried) // output: true // person.name=”John” -> compile error(val은 변경 불가) person.isMarried=false println(person.isMarried) // output: false } 코틀린 소스코드 구조: 디렉터리와 패키지
자바처럼 코틀린도 파일의 맨 앞에 package 문을 넣을 수 있다.
그러면 그 파일 안에 있는 모든 선언(클래스, 함수, 프로퍼티 등)이 해당 패키지에 들어가고, 같은 패키지에 속해 있다면 다른 파일에서 정의한 선언일지라도 직접 사용할 수 있다.
반면, 다른 패키지에 정의한 선언을 사용하려면 import를 통해 선언을 불러와야 한다.
3. 선택 표현과 처리: enum과 when
when은 자바의 switch를 대치하되 훨씬 더 강력하다.
enum 클래스
자바에서는 다음과 같이 간단하게 사용한다. enum ‘클래스명’ { }
코틀린에서는 여기에 class라는 말이 더 붙는다. enum class ‘클래스명’ { }
자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아니다. 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); fun rgb() = (r * 256 + g) * 256 + b } fun main(args: Array
) { println(Color.RED.rgb()) } when으로 enum 클래스 다루기
fun getMnemonic(color: Color) = when (color) { Color.RED -> “Richard” Color.ORANGE -> “Of” Color.YELLOW -> “York” Color.GREEN -> “Gave” Color.BLUE, Color.INDIGO, Color.VIOLET -> “color” } fun main(args: Array
) { println(getMnemonic(Color.RED)) // output: Richard println(getMnemonic(Color.INDIGO)) // output: color } when과 임의의 객체를 함께 사용
자바의 경우 분기 조건에 상수(enum 상수나 숫자 리터럴)만을 사용할 수 있지만, 코틀린 when의 분기 조건은 임의의 객체를 허용한다.
fun mix(c1: Color, c2:Color) = when (setOf(c1, c2)){ setOf(Color.RED, Color.YELLOW) -> Color.ORANGE setOf(Color.YELLOW, Color.BLUE) -> Color.GREEN setOf(Color.BLUE, Color.VIOLET) -> Color.INDIGO else -> throw Exception(“Dirty color”) } fun main(args: Array
) { println(mix(Color.BLUE, Color.YELLOW)) // output: GREEN } 위 예처럼 setOf를 사용해서 두 색의 조합을 찾는 경우, 입력이 들어올 때마다 여러 Set 인스턴스를 생성한다. 이 함수가 아주 자주 호출되는 경우 불필요한 가비지 객체가 늘어나 비효율적이다.
이를 다음과 같이 수정할 수 있다. 성능은 향상되지만 가독성은 떨어진다
setOf(Color.RED, Color.YELLOW) -> Color.ORANGE == (c1==RED && c2==YELLOW) || (c1==YELLOW && c2=RED) -> Color.ORANGE
출처:
– [Kotlin IN ACTION]
반응형
코틀린 기초(함수,클래스,프로퍼티,enum)
안녕하세요. 문범우입니다.
이번 포스팅에서는 코틀린의 기초에 대해서 알아보도록 합니다.
구체적으로는 함수, 변수, 클래스, 프로퍼티, enum에 대해서 학습합니다.
관련된 내용의 코드는 아래 주소에서 확인하실 수 있습니다.
https://github.com/doorBW/kotlin-study
1. 함수
우선 어느 프로그래밍 언어에서나 시작해보는 “Hello, world!”를 출력해보자.
1 2 3 fun main(args: Array < String > ){ println ( “Hello, world!” ) } cs
코틀린에서는 위와 같이 간단한 코드로 문자열 출력을 할 수 있다. 본격적으로 코틀린에 대해서 알아보기 이전에 위 코드에서 파악할 수 있는 몇가지를 살펴보자.
– 함수를 최상위 수준에 정의가 가능하다. 즉, 꼭 클래스 안에 함수가 존재해야 하는게 아니다.
– 함수를 선언할 때에는 fun 키워드를 이용한다.
– 파라미터 이름 뒤에 그 타입을 서술한다. 변수 선언시에도 동일하다.
– 표준 자바 라이브러리 함수를 간결하게 사용할 수 있는 래퍼(wrapper)가 존재한다.(System.out.println -> println)
– 코드의 끝에 세미콜론을 붙이지 않는다.
위의 코드와 같은 경우에는 문자열 출력만 진행하고 따로 반환 값은 없는 함수를 나타내고 있다.
그럼 함수의 반환 값이 존재할 때, 반환 타입은 어디에 나타내야 할까?
다음의 함수는 두 숫자를 입력 받고, 그 중 큰 숫자를 반환하는 함수다.
1 2 3 4 5 6 7 8 fun max(n1: Int, n2: Int): Int { return if (n1 > n2) n1 else n2 } fun main(args: Array < String > ) { println (max( 7 , 5 )) // 7 } Colored by Color Scripter cs
위의 max 함수를 확인해보면 main 함수와 달리 파라미터와 중괄호 사이에 반환 값 타입을 확인할 수 있다.
즉, 코틀린에서는 다음과 같은 함수의 틀을 가진다.
fun <함수이름>(파라미터): <반환 값 타입> { 함수내용 }
헌데, max 함수의 반환 내용을 살펴보면 if 문이 값을 만들어 내고 있다.
코틀린에서는 if가 값을 만들어 내지 못하는 문(statement)이 아니라 식(expression)이다. 자바에서는 if가 문으로 사용되기 때문에 코틀린과의 다른점 중 하나이다.
추후 하나씩 알아보면서 설명하겠지만, 자바에서는 모든 제어구조가 문이지만, 코틀린에서는 루프구조를 제외한 대부분이 식으로 되어있다.
이번에는 max 함수에 대해 한번 더 살펴보자.
max함수의 본문은 if식 하나로 이루어져 있다. 이러한 경우 함수에서 중괄호를 없애고, return을 없애면서 등호(=)하나로만 표현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 fun max(n1: Int, n2: Int): Int { return if (n1 > n2) n1 else n2 } fun maxShort(n1: Int, n2: Int): Int = if (n1 > n2) n1 else n2 fun main(args: Array < String > ) { println (max( 7 , 5 )) // 7 println (maxShort( 7 , 5 )) // 7 } Colored by Color Scripter cs
위와 같이 maxShort함수는 기존 max함수와 달리 중괄호를 제거하고 등호를 이용하여 ‘식’을 본문으로 만든 함수이다. 이와 같은 함수를, ‘식이 본문인 함수’라고 하며 기존의 max함수는 ‘블록이 본문인 함수’라고 한다.
헌데 식이 본문인 함수에서는 반환 타입을 다음과 같이 생략할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fun max(n1: Int, n2: Int): Int { return if (n1 > n2) n1 else n2 } fun maxShort(n1: Int, n2: Int): Int = if (n1 > n2) n1 else n2 fun maxShortMore(n1: Int, n2: Int) = if (n1 > n2) n1 else n2 fun main(args: Array < String > ) { println (max( 7 , 5 )) // 7 println (maxShort( 7 , 5 )) // 7 println (maxShortMore( 7 , 5 )) // 7 } Colored by Color Scripter cs
식이 본문인 함수에서는 굳이 프로그래머가 반환 타입을 지정하지 않아도 코틀린의 ‘타입 추론’에 의해 컴파일러가 타입을 체크할 수 있게 된다.
2. 변수
1 2 3 4 5 6 var number1: Int = 1 var number2 = 2 var answer1 = “정답1 입니다.” var answer2: String answer2 = “정답2 입니다.” var answer3 // error cs
변수 선언과 초기화는 위와 같이 표현된다.
선언과 초기화를 동시에 진행하는 경우, number1과 같이 타입까지 지정해주거나, number2와 answer1과 같이 타입을 생략할 수 있다.
하지만, 선언과 초기화를 다른 시점에 진행하는 경우에는 선언 시점에 꼭 타입을 지정해주어야 한다.
또한 코틀린에서는 ‘변경 가능한 변수’와 ‘변경 불가능한 변수’ 2가지가 존재한다.
1 2 3 4 var mutable_number = 3 val immutable_number = 3 mutable_number = 5 immutable_number = 5 // Val cannot be reassigned cs
코틀린에서 변수를 선언하는 키워드는 ‘var’와 ‘val’ 두가지가 있다.
이때, ‘var’는 변경 가능한 변수로, 자바의 일반적인 변수와 같다.
하지만 ‘val’는 변경 불가능한 변수로, 자바에서 final 변수와 같다.
물론, val 변수의 경우참조 자체는 변경 불가이더라도 그 참조 값이 가리키는 객체의 내부값은 변경될 수 있다.
또한, var 변수의 경우 값이 변경 될 수는 있지만 타입은 고정되기 때문에, 다른 타입의 값으로 변경하려고 하면 컴파일 오류가 발생한다.
3. 문자열 템플릿
이번에 알아볼 내용은 ‘문자열 템플릿’이다.
println 을 통해 문자열 출력시, 변수 값을 추가하는 예제를 통해 간단하게 확인해보자.
1 2 3 4 val helloStr = “Hello” println ( “$helloStr kotlin!” ) println ( “${helloStr} kotlin!” ) // Hello kotlin! cs
위와 같이 코틀린에서는 $ 기호를 이용하여 변수를 문자열 안에 사용할 수 있다.
이때, 중괄호를 이용하여 변수를 감싸는 것이 더 좋다.
추가로 중괄호를 사용할 때에는 변수말고 식 자체도 넣을 수 있다.
1 2 3 4 5 val calcNum = 3 + 5 println ( “calcNum: ${calcNum}” ) // 8 println ( “calcNum: ${3 + 5 + 5}” ) // 13 cs
앞에서 if는 코틀린에서 문이 아니라 식이라고 했다. 그럼 문자열 템플릿을 이용해 다음과 같이 바로 값을 확인할 수 있다.
1 2 println ( “Max number in 5 or 3, is ${if (5 > 3) 5 else 3}” ) // 5 Colored by Color Scripter cs
4. 클래스와 프로퍼티
우선 자바에서의 간단한 클래스를 살펴보자.
1 2 3 4 5 6 7 8 9 10 11 public class Person { private final String name; public Person( String name) { this .name = name; } public String getName() { return name; } } Colored by Color Scripter cs
위의 Person클래스는 Java에서 흔하게 볼 수 있는 형태이다. 위와 같은 클래스를 코틀린에서는 다음과 같이 작성한다.
1 class Person(val name: String ) cs
매우 간단하다.
이렇게 짧은 한줄의 코드가 어떤 의미를 가지고 있는지 잠깐 살펴보자.
우선 코틀린에서 기본 가시성은 public이다. 따라서 class 앞에 public을 생략하였다.
또한 자바 코드를 보면 name 프로퍼티는 setter가 없기에 변경 불가능한 프로퍼티임을 암시할 수 있다. 이때 코틀린에서는 프로퍼티를 정의하며 val와 var의 구분으로 읽기 전용 프로퍼티인지, 쓸 수 있는 프로퍼티인지를 나타낼 수 있다.
그럼 위와 같이 정의한 Person 클래스에 새로운 프로퍼티를 하나 추가한 후 사용해보도록 하자.
1 2 3 4 5 6 7 8 9 class Person(val name: String , var isMarried: Boolean) fun main(args: Array < String > ) { val person = Person( “Door” , false ) println (person.name) // Door println (person.isMarried) // false } Colored by Color Scripter cs
기존의 Person 클래스에 변경 가능한, isMarried 프로퍼티를 추가하였고, 이후 생성하고 해당 객체에 대한 값을 출력해보았다.
4번 라인에서 Person 객체를 생성 할 때, 자바와는 다르게 new 키워드를 사용하지 않은 걸 볼 수 있다.
또한 5번과 7번 라인에서 객체의 프로퍼티 이름에 직접 접근하면 그에 대한 게터를 코틀린이 호출하는 것을 알 수 있다.
또한 아래와 같이 프로퍼티 게터를 직접 선언할 수도 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Rectangle(val height: Int, val width: Int) { val isSquare: Boolean get() { return height = = width } } fun main(args: Array < String > ) { val rectangle1 = Rectangle( 5 , 4 ) println (rectangle1.isSquare) // false val rectangle2 = Rectangle( 5 , 5 ) println (rectangle2.isSquare) // true } Colored by Color Scripter cs
5. Enum 클래스
마지막으로 enum 클래스에 대해서 알아보자.
1 2 3 enum class Color { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET } Colored by Color Scripter cs
위의 코드는 코틀린에서 enum class인 Color 정의한 코드이다. 자바와는 달리 class 앞에 enum을 사용해야 한다.
자바와 동일하게, 코틀린에서도 enum은 단순히 값만 열거하지는 않는다. enum 클래스 안에 프로퍼티나 메소드를 다음과 같이 정의할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 ); // need semicolon fun rgb() = (r * 256 + g) * 256 + b } fun main(args: Array < String > ) { println (Color.BLUE.rgb()) // 255 } Colored by Color Scripter cs
위의 코드와 같이 enum class에서도 일반적인 class와 동일하게 생성자와 프로퍼티를 선언한다. 또한 해당하는 enum 상수를 정의할 때는 그 상수에 대응되는 프로퍼티 값을 넣어주면 된다.
또한, 이전과는 다르게 enum class에서 메소드를 정의하는 경우에는 필수로 enum 상수 목록의 마지막에 세미콜론을 붙여주어야 한다.
– Quiz
앞에서 학습한 내용들을 바탕으로 몇가지 퀴즈를 풀어보자.
Q1. if가 자바와 코틀린에서 다른점은 무엇인가?
정답 확인
접기 자바에서의 if는 문(statement)라서 값을 만들어내지 못하는 반면에 코틀린에서의 if는 식(expression)이기 때문에 값을 만들어낼 수 있다. 접기
Q2. val 변수와 var 변수의 차이는?
정답 확인
접기 val 변수는 변경 불가능하지만 var는 변경 가능하다. 접기
Q3. 코틀린에서 세미콜론을 붙여야 하는 경우는 언제인가?
정답 확인
접기 enum class를 정의 할 때, 그 안에 메소드를 정의한다면 enum 상수 목록과 메소드 사이에 세미콜론을 넣어야 한다.
접기
참고 서적 및 링크
* [Kotlin in Action] – 드미
트리 제메로프/스베트라나 이사코바 지음, 오현석 옮김, 에이콘 출판사
반응형
Kotlin in Action. [2] 코틀린 기초
코틀린 기초
함수
hello world 예시 함수
fun main ( args : Array < String > ) { println ( “hello world” ) }
함수를 선언할때, fun 키워드 사용.
키워드 사용. 파라미터 이름 뒤에 그 파라미터의 타입을 씀.
함수를 최상위 수준에 정의 할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣어야 할 필요가 없다.
코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않음.
코틀린 표준 라이브러리 는 표준 자바 라이브러리 함수 를 간결하게 사용할 수 있게 감싼 Wrapper(래퍼) 를 제공한다. Ex. println
는 를 간결하게 사용할 수 있게 감싼 를 제공한다. Ex. ; 을 붙이지 않아도 됨
식이 본문인 함수
문(statement)과 식(experssion)의 구분 코틀린에서는 if는 식이지 문이 아니다.
식 은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있음.
은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있음. 문 은 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다.
은 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다. 자바에서는 모든 제어 구조가 문 인 반면 코틀린에서는 루프를 제외한 대부분의 제어 구조가 식
인 반면 코틀린에서는 루프를 제외한 대부분의 제어 구조가 대입문은 자바에서는 식 이었으나 코틀린에서는 문 이 됐다.
fun max1 ( a : Int , b : Int ) : Int { return if ( a > b ) a else b } fun max2 ( a : Int , b : Int ) : = if ( a > b ) a else b
변수
val answer = 42 val answer : Int = 42 val answer : Int answer = 42
식이 본문인 함수 에서와 마찬가지로 타입을 지정하지 않아도, 컴파일러가 초기화 식 을 분석해서 초기화 식 의 타입을 변수 타입으로 지정한다.
초기화 식을 사용하지 않고 변수를 선언하려면 반드시 변수 타입을 명시해야 한다.
변경 가능한 변수와 변경 불가능한 변수
val 변경 불가능한( immutable ) 참조를 저장하는 변수다. val로 선언된 변수는 일단 초기화하고 나면 재대입 이 불가능. 자바로 치면 final val 참조 자체는 불변일지라도 그 참조가 가리키는 객체의 내부 값은 변경가능. val 변수는 블록을 실행할 때 정확히 한 번만 초기화 돼야 함.
val languages = arrayListOf ( “Java” ) languages . add ( “Kotlin” )
var 변경 가능한( mutable) 참조. 변수의 값이 바뀔 수 있다. 자바의 일반 변수에 해당한다. 변수의 값을 변경할 수 있지만, 변수의 타입은 고정돼어 바뀌지 않음.
var answer = 42 answer = “no answer”
문자열 템플릿
val name = “myName” println ( “hello, $name ” ) println ( “hello, ${ name } ” ) println ( “hello, ${ name [ 0 ] } ” ) println ( “hello, ${if (name.size > 0) name[0] else ” someone “}” )
Class and Property(프로퍼티)
java vs kotlin
public class Person { private final String name ; public Person ( String name ) { this . name = name ; } public String getName ( ) { return name ; } }
자바의 경우 필드가 둘 이상으로 늘어나면 생성자인 Person(string name) 의 본문에서 파라미터를 이름이 같은 필드에 대입하는 대입문의 수도 늘어남.
class Person ( val name : String )
코틀린의 경우 코드가 없이 데이터만 저장하는 클래스( 값 객체, value object )를 지원함으로 자바에 비해 간결함.
)를 지원함으로 자바에 비해 간결함. public 가시성 변경자( visiblity modifier )가 코틀린의 경우 public 이 default 임으로 생략 가능.
property(프로퍼티)
자바에서는 데이터를 필드(field) 에 저장하며, 멤버 필드의 가시성은 보통 private 이다. 클래스는 자신을 사용하는 클라이언트가 그 데이터에 접근하는 통로로 쓸 수 있는 접근자 메서드(accessor method) 를 제공한다. (Ex. getter, setter )
자바에서는 필드 와 접근자 를 한데 묶어 프로퍼티 라고 부름.
코틀린은 프로퍼티 를 언어 기본 기능으로 제공하며, 코틀린 프로퍼티 는 자바의 필드 와 접근자 메소드 를 완전히 대신한다.
val 로 선언한 프로퍼티 는 읽기 전용, var 로 선언한 프로퍼티 는 변경 가능
class Person ( val name : String , var isMarried : Boolean , )
Person person = new Person ( “Bob” , true ) ; System . out . println ( person . getName ( ) ) ; System . out . println ( person . isMarried ( ) ) ; person . setMarried ( false ) val person = Person ( “Bob” , true ) println ( person . name ) println ( person . isMarried ) person . isMarried = fasle
코틀린의 name 프로퍼티 는 자바 쪽에서는 getName
는 자바 쪽에서는 이름이 is 로 시작하는 프로퍼티 의 게터 에는 get 이 붙지 않고 원래 이름을 그대로 사용, 세터 에는 is 를 set 으로 바꾼 이름을 사용.
커스텀 접근자
class Rectangle ( val height : Int , val width : Int ) { val isSquare : Boolean get ( ) { return height == width } }
프로퍼티 의 접근자 를 직접 작성하는 코드
의 를 직접 작성하는 코드 isSquare 프로퍼티 에는 자체 값을 저장하는 필드 가 필요 없다. 이 프로퍼티 에는 자체 구현을 제공하는 게터 만 존재한다. 클라이언트가 프로퍼티 에 접근할 때마다 게터 가 프로퍼티 값 을 매번 다시 계산한다.
디렉터리와 패키지
패키지 이름 뒤에 . * 를 추가하면 패키지 안의 모든 선언을 임포트할 수 있다. 이런 스타 임포트(star import) 를 사용하면 패키지 안에 있는 모든 클래스뿐 아니라 최상위에 정의된 함수나 프로퍼티까지 모두 불러오게 된다.
자바에서는 패키지의 구조와 일치하는 디렉토리 계층 구조를 만들고 클래스의 소스코드를 그 클래스가 속한 패키지와 같은 디렉토리에 위치시켜야 한다. (자바에서는 디렉토리 구조가 패키지 구조를 그대로 따라야 한다)
코틀린에서는 여러 클래스를 한 파일에 넣을 수 있고, 파일의 이름도 마음대로 정할 수 있다. 코틀린에서는 디스크상의 어느 디렉토리에 소스 코드 파일을 위치시키든 관계없다.
자바와 코틀린을 함께 사용하는 프로젝트에서는 자바의 방식을 따라야 한다.
enum과 when
enum class
enum class Color { RED , ORANGE , YELLOW , GREEN } 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 } > > > println ( Color . RED . rgb ( ) ) 255
when으로 enum 클래스 다루기
if 와 마찬가지로 when 도 값을 만들어내는 식이다. 따라서 식이 본문임 함수 에 when 을 바로 사용할 수 있다.
fun getMnemonic ( color : Color ) = when ( color ) { Color . RED -> “Richard” Color . ORANGE -> “Of” Color . YELLOW -> “York” Color . GREEN -> “Gave” Color . BLUE -> “Battle” Color . INDIGO -> “In” Color . VIOLET -> “Vain” } > > > println ( getMnemonic ( Color . BLUE ) ) Battle
자바와 달리 분기의 끝에 break 를 넣지 않아도 됨.
를 넣지 않아도 됨. 한 분기 안에서 여러 값을 매치 패턴으로 사용 할려면 값 사이를 , 로 분리한다.
import ch02 . colors . Color import ch02 . colors . Color . * fun getWarmth ( color : Color ) = when ( color ) { RED , ORANGE , YELLOW -> “warm” GREEN -> “neutral” BLUE , INDIGO , VIOLET -> “cold” }
when과 임의의 객체를 함께 사용
코틀린의 when 은 자바의 switch 보다 강력하다.
은 자바의 보다 강력하다. 분기 조건에 상수만을 사용할 수 있는 자바 switch 와 달리 코틀린 when 의 분기 조건은 임의의 객체를 허용한다.
fun mix ( cl : Color , c2 : Color ) = when ( setOf ( c1 , c2 ) ) { setOf ( RED , YELLOW ) -> ORANGE setOf ( YELLOW , BLUE ) -> GREEN setOf ( BLUE , VIOLET ) -> INDIGO else -> throw Exception ( “Dirty color” ) } > > > println ( mix ( BLUE , YELLOW ) ) GREEN
when 식은 인자 값과 매치하는 조건 값을 찾을 때까지 각 분기를 검사한다.
인자 없는 when 사용
mix 함수가 자주 호출된다면 불필요한 가비치 객체 가 늘어남.
가 늘어남. 코드는 읽기 어려워지지만 성능을 위해 감수해야 하는 경우임.
when 에 아무런 인자도 없으려면 각 분기의 조건이 Boolean 결과를 계산하는 식이어야 한다.
fun mixOptimized ( c1 : Color , c2 : Color ) = when { ( c1 == RED && c2 == YELLOW ) || ( c1 == YELLOW && c2 == RED ) -> ORANGE ( c1 == YELLOW && c2 == BLUE ) || ( c1 == BLUE && c2 == YELLOW ) -> GREEN ( c1 == BLUE && c2 == VIOLET ) || ( c1 == VIOLET && c2 == BLUE ) -> INDIGO else -> throw Exception ( “Dirty color” ) } > > > printn ( mixOptimized ( BLUE , YELLOW ) ) GREEN
스마트 캐스트 : 타입 검사 + 타입 캐스트
interface Expr class Num ( val value : Int ) : Expr class Sum ( val left : Expr , val right : Expr ) : Expr 식을 위한 Expr 인터페이스 , Sum , Num 클래스는 그 Expr 인터페이스를 구현 Expr는 아무 메소드도 선언하지 않으며 , 단지 여러 타입의 식 객체를 아우르는 공통 타입 역할만 수행 .
Expr 인터페이스에는 두 가지 구현 클래스가 존재한다. 어떤 식이 수라면 그 값을 반환한다 어떤 식이 합계라면 좌항과 우항을 계산한 다음 그 두 값을 합한 값을 반환한다
fun eval ( e : Expr ) : Int { if ( e is Num ) { val n = e as Num return n . value } if ( e is Sum ) { return eval ( e . right ) + eval ( e . left ) } throw IllegalArgumentException ( “Unknown expression” ) } > > > println ( eval ( Sum ( Sum ( Num ( 1 ) , Num ( 2 ) ) , Num ( 4 ) ) ) ) 7
코틀린에서는 is 를 사용해 변수 타입을 검사
를 사용해 변수 타입을 검사 is 검사는 자바의 instanceof 와 비슷
검사는 자바의 와 비슷 자바에서 변수의 타입을 확인한 다음에 그 타입에 속한 멤버에 접근하기 위해서는 명시적으로 변수 타입을 캐스팅해야 함. 이런 멤버 접근을 여러 번 수행해야 한다면 변수에 따로 캐스팅한 결과 를 저장 한 후 사용해야함.
를 한 후 사용해야함. 코틀린에서는 이것을 프로그래머 대신 컴파일러가 캐스팅 해줌.
해줌. 어떤 변수가 원하는 타입인지 일단 is 로 검사하고 나면 굳이 변수를 원하는 타입으로 캐스팅하지 않아도 마치 처음부터 그 변수가 원하는 타입으로 선언된 것처럼 사용할 수 있다.
로 검사하고 나면 굳이 변수를 원하는 타입으로 캐스팅하지 않아도 마치 처음부터 그 변수가 원하는 타입으로 선언된 것처럼 사용할 수 있다. 이것은 컴파일러가 캐스팅을 수행해줌. => 스마트 캐스팅
스마트 캐스트 는 is 로 변수에 든 값의 타입을 검사한 다음에 그 값이 바꿜 수 없는 경우에만 작동.
는 로 변수에 든 값의 타입을 검사한 다음에 그 값이 바꿜 수 없는 경우에만 작동. 프로퍼티 에 대해 스마트 캐스트 를 사용한다면 그 프로퍼티 는 반드시 val 이어야 하며, 커스텀 접근자 를 사용한 것이어도 안 된다.
원하는 타입으로 명시적으로 타입 캐스팅 을 하기 위해서는 as 를 사용한다. val n = e as Num
리팩토링 : if를 when으로 변경
fun eval ( e : Expr ) : Int = when ( e ) { is Num -> e . value is Sum -> eval ( e . right ) + eval ( e . left ) else -> throw IllegalArgumentException ( “Unknown expression” ) }
if와 when의 분기에서 블록 사용
fun evalWithLogging ( e : Expr ) : Int = when ( e ) { is Num -> { println ( “num: ${ e . value } ” ) e . value } is Sum -> { val left = evalWithLogging ( e . left ) val right = evalWithLogging ( e . right ) println ( “sum: $left + $right ” ) left + right } else -> throw IllegalArgumentException ( “Unknown expression” ) }
블록의 마지막 식 이 블록의 결과 이다.
이터레이션 : while, for
while문
자바와 코틀린의 문법이 동일함.
수에 대한 이터레이션 : 범위와 수열
자바의 for 루프 => 코틀린의 range
코틀린의 range 는 양끝을 포함하는 구간임.
.. 연산자로 시작 값과 끝 값을 연결해서 범위를 만든다. 문자도 가능 ( ‘A’..’F’ )
역방향은 downTo , 증감값 조절은 step 을 사용.
끝 값을 포함하지 않는 반만 닫힌 범위는 until 함수를 사용해야함.
Map 의 키와 값에 대해 이터레이션 가능.
withIndex 로 인덱스와 함께 컬렉션을 이터레이션 할 수 있음.
val oneToTen = 1 .. 10 for ( i in 100 downTo 1 step 2 ) { println ( fizzBuzz ( i ) ) } fun fizzBuzz ( i : Int ) = when { i % 15 == 0 -> “FizzBuzz ” i % 3 == 0 -> “Fizz ” i % 5 == 0 -> “Buzz ” else -> ” $i ” } > > > for ( i in 1 .. 100 ) { print ( fizzBuzz ( i ) ) } 1 2 Fizz 4 Buzz Fizz 7 .. . for ( ( key , value ) in mutableMapOf ( Pair ( “A” , 1 ) ) ) { } for ( ( index , value ) in mutableListOf ( 1 , 2 , 3 ) . withIndex ( ) ) { }
in으로 컬렉션이나 범위의 원소 검사
fun isLetter ( c : Char ) = c in ‘a’ .. ‘z’ || c in ‘A’ .. ‘Z’ fun isNotDigit ( c : Char ) = c ! in ‘0’ .. ‘9’ fun main ( args : Array < String > ) { println ( isLetter ( ‘q’ ) ) println ( isNotDigit ( ‘x’ ) ) }
fun recognize ( c : Char ) = when ( c ) { in ‘0’ .. ‘9’ -> “It’s a digit!” in ‘a’ .. ‘z’ , in ‘A’ .. ‘Z’ -> “It’s a letter!” else -> “I don’t know…” } fun main ( args : Array < String > ) { println ( recognize ( ‘8’ ) ) } println ( “Kotlin” in “Java” .. “Scala” ) println ( “Kotlin” in setOf ( “Java” , “Scala” ) )
in 연산자를 사용해 어떤 값이 범위에 속하는지 검사 할 수 있음.
!in 은 in 연산자의 반대 연산.
비교가 가능한 클래스( java.lang.Comparable 인터페이스를 구현한 클래스)라면 그 클래스의 인스턴스 객체를 사용해 범위를 만들 수 있다.
컬렉션 에도 in 연산을 사용할 수 있음.
코틀린의 예외 처리
코틀린의 예외(exception) 처리는 자바나 다른 언어의 예외 처리와 비슷.
처리는 자바나 다른 언어의 예외 처리와 비슷. 발생한 예외를 함수 호출 단에서 처리(catch) 하지 않으면 함수 호출 스택을 거슬러 올라가면서 예외를 처리하는 부분이 나올 때까지 예외를 다시 던진다.( rethrow )
하지 않으면 함수 호출 스택을 거슬러 올라가면서 예외를 처리하는 부분이 나올 때까지 예외를 다시 던진다.( ) 자바와 달리 코틀린의 throw 는 식 이므로 다른 식 에 포함될 수 있다.
try, catch, finally
fun readNumber ( reader : BufferedReader ) : Int ? { try { val line = reader . readLine ( ) return Integer . parseInt ( line ) } catch ( e : NumberFormatException ) { return null } finally { reader . close ( ) } }
자바에서는 함수를 작성할 때 함수 선언 뒤에 throws IOException 을 붙여야 한다. 이유는 IOException 이 체크 예외, checked exception 이기 때문이다. 자바에서는 체크 예외 를 명시적으로 처리해야 한다.
어떤 함수가 던질 가능성이 있는 예외나 그 함수가 호출한 다른 함수에서 발생할 수 있는 예외를 모두 catch 로 처리해야 하며, 처리하지 않은 예외는 throws 절에 명시해야 한다.
코틀린에서는 함수가 던지는 예외를 지정하지 않고 발생한 예외를 catch 해도 되고 안해도 된다. 자바는 체크 예외 처리를 강제한다. 코틀린의 경우 체크 예외 와 언체크 예외 를 구분하지 않는다.
체크 예외 와 언체크 예외 체크 예외, checked exception Exception 클래스의 서브클래스이면서 RuntimeException 클래스를 상속하지 않은 것들.
클래스의 서브클래스이면서 클래스를 상속하지 않은 것들. RuntimeExeception 클래스를 상속하지 않은 Exception 클래스들이다. 체크 예외 는 예외가 발생할 수 있는 메소드를 사용할 경우 반드시 예외를 처리하는 코드를 함께 작성해야 한다.
클래스를 상속하지 않은 클래스들이다. 는 예외가 발생할 수 있는 메소드를 사용할 경우 반드시 예외를 처리하는 코드를 함께 작성해야 한다. 예외를 처리하기 위해서 catch 문으로 잡거나 throws 를 통해 메소드 밖으로 던질 수 있다. 만약 예외를 처리하지 않으면 컴파일 에러가 발생한다. 언체크 예외, unchecked exception RuntimeException 클래스를 상속한 Exception 클래스들은 예외 처리를 강제하지 않기 때문에 언체크 예외 라고 불린다.
클래스를 상속한 클래스들은 예외 처리를 강제하지 않기 때문에 라고 불린다. 에러를 처리하지 않아도 컴파일 에러가 발생하지 않는다.
RuntimeException 은 주로 프로그램에 문제가 있을 때 오류가 발생하도록 의도된 것으로 대표적으로 NullPointerException 이 있다.
은 주로 프로그램에 문제가 있을 때 오류가 발생하도록 의도된 것으로 대표적으로 이 있다. 즉, RuntimeException 은 예상치 못했던 상황에서 발생하는 것이 아니므로 굳이 예외 처리를 강제하지 않는다.
try를 식으로 사용
코틀린의 try 는 if 나 when 과 마찬가지로 식이다. 따라서 try 의 값을 변수에 대입할 수 있다.
는 나 과 마찬가지로 식이다. 따라서 의 값을 변수에 대입할 수 있다. if 와 달리 try 의 본문을 반드시 {} 중괄호 로 둘러싸야 한다.
So you have finished reading the 코 틀린 기초 topic article, if you find this article useful, please share it. Thank you very much. See more: 코틀린 강좌, 코 틀린 리플렉션, 코 틀린 세팅, 코 틀린 PDF, 코틀린 기초 강좌, 코 틀린 주석, 코 틀린 타입, 코 틀린 특징