Programming Language/Kotlin

Programming Language/Kotlin

[Kotlin] var, val 차이 간단 정리

var, val 이란 val : 불변 변수로, 값의 읽기만 허용되는 변수. Value의 약자이다. var : 가변 변수로 값의 읽기와 쓰기가 모두 허용되는 변수, Variable의 약자이다. 변수는 값을 저장하는 메모리 공간에 붙는 이름이다. 코틀린에는 두가지의 형을 지원하게 되는데 위에서 설명한 val과 var이다. 위에서 설명한 것 처럼 val과 var은 각각 불변 변수와 가변 변수를 나타내고 있고, 공통적으로 초기화시에 값을 할당하지 않는다면 반드시 Type명시해야한다. 다만 컴파일러가 변수 탕비을 추론할 수 있는 경우에는 Type를 생략해도 된다. val val로 지정된 불변 타입 변수는 초기에 값을 할당되면 나중에 값을 변경할 수 없다. 강제로 변수를 변경하려고 한다면 컴파일 에러가 발생한다. ..

Programming Language/Kotlin

[Kotlin] static, object, companion object 정리

오늘은 static, object, companion object 차이에 대해서 공부해보자 우선 statc에 대해서 정리해보자. Java static 이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static 메소드를 만들 수 있는데 다른 말로 정적 필드와 정적 메소드라고도 하며 이 둘을 합쳐서 정적멤버라고 한다.(혹은 클래스 멤버라고도 한다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리한다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용이 가능하다. ex) public class Main { ..

Programming Language/Kotlin

[Kotlin] Scope Function 정리 (let, run, with, apply, also)

스코프 함수란? 코틀린에서는 Object Context 내에서 코트 블록을 실행하는 것이 목적인 여러 함수가 존재한다. 제공된 람다식을 사용하여 객체에 이러한 함수들을 호출하면 임시적으로 스코프(범위)가 설정된다. 이 범위에서는 해당 객체의 이름없이 접근할 수있다. 스코프 함수에는 5가지의 함수가 존재하는데, let, run, with, apply, also 공통점으로는 객체에 붙어있는 코드 블록을 실행시킨다는 것이다. 이에 차이점과 각 함수의 특징들에 대해서 정리해보자. 5가지의 함수의 정의이다. inline fun T.run(block: T.() -> R): R { return block() } inline fun with(receiver: T, block: T.() -> R): R { return ..

Programming Language/Kotlin

[Kotlin] Inline class란

인라인 클래스란? 경우에 따라 비즈니스 논리가 일부 형식 주위에 래퍼를 만드는 것이 필요하다. 그러나 추가 힙 할당으로 인해 런타임 오버헤드가 발생하고 또한 래핑된 유형이 기본 유형인 경우 기본 유형은 일반적으로 런타임에 의해 크게 최적화되는 반면 해당 래퍼는 특별한 처리를 받지 않기 때문에 성능 저하가 발생한다. 이러한 문제를 해결하기 위해서 Kotlin에서는 inline class를 제공한다. 인라인 클래스는 value-based classes의 하위 집합입니다. 이는 정체성은 존재하지 않으며 값만을 보유합니다. inline class는 생성자로 단 하나의 값만 받을 수 있다. 물론 클래스내에 프로퍼티와 함수를 정의할 수도 있다. inline class UserName(val value: String..

Programming Language/Kotlin

[Kotlin] Sealed Class 란

Sealed class란 Sealed class 및 interface는 상속에 대한 더 많은 제어를 제공하는 제한된 클래스 계층을 나타냅니다. 추상 클래스로 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다, 즉 컴파일러에서 Sealed class의 자식 클래스가 어떤 것이 있는지 알 수 있다는 것이다. sealed interface Error sealed class IOError(): Error class FileReadError(val file: File): IOError() class DatabaseError(val source: DataSource): IOError() object RuntimeError : Error 어떤 의미에서 Sealed class 는 Enum class와 유사하다..

Programming Language/Kotlin

[Kotlin] Enum class란

Enum class 열거형 클래스는 형식이 안전한 열거형을 구현하는 것입니다. enum class Direction { NORTH, SOUTH, WEST, EAST } 내부의 각각의 상수들은 오브젝트이다. 각 열거형 상수는 개체이다. 열거형 상수는 쉼표로 구분된다. 열거형 클래스는 다음과 같이 초기화할 수 있다. enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } Anonymous classes 열거형 상수는 해당 메서드와 재정의 기본 메서드를 사용하여 고유한 익명 클래스를 선언할 수 있습니다. enum class ProtocolState { WAITING { override fun signal() = TALK..

Programming Language/Kotlin

[Kotlin] Data Class란

Data class 란 데이터를 보유하는 것이 주된 목적인 클래스입니다. Ex) User의 data class data class User(val name: String, val age: Int) 데이터 클래스의 충족 조건 주요 생성장에는 적어도 하나의 파라매터가 필요하다. 모든 주요 생성자 파라매터는 val 혹은 var로 지정 데이터 클래스는 추상 클래스, open 클래스, sealed클래스, inner클래스 일수 없다. 1.1버전 이후 데이터 클래스는 다른 클래스를 확장할 수 있다. 클래스에 파라매터가 없는 생성자가 필요한 경우, 모든 프로퍼티의 기본값을 지정할 필요가 있다. data class User(val name: String = "", val age: Int = 0) 컴파일러에서는 기본생성자..

Programming Language/Kotlin

[Kotlin] 코틀린으로 앱 개발시 자바보다 이점

표현력과 간결함 코틀린의 최신 언어 기법을 이용하면 훨씬 간결한 구문으로 프로그램을 작성할 수 있습니다. 같은 로직을 자바와 코틀린으로 각각 작성해 보면 코틀린의 코드가 훨씬 간결하다는 것을 알 수 있습니다. 안전한 코드(safer code) 코틀린은 널안정성을 제공합니다. 객체지향 프로그래밍에선느 객체는 널 상태일 수 있으며, 이때 런타임 오류인 널 포인트 예외(NullPointException)가 발생할 수 있습니다. 따라서 객체가 널인 상황을 고려해 개발해야 하는데, 코틀린에서는 변수를널 허용(Nullable)과 널 불허용(not null)으로 구분해서 선언합니다. 이로써 널과 관련된 여러 부분을 컴파일러가 해결해줍니다. 상호운용성(interoperable) 코틀린은 자바와 100% 호환합니다. 따..

Tenacity_Dev
'Programming Language/Kotlin' 카테고리의 글 목록 (3 Page)