본문 바로가기

Kotlin/📕Kotlin 공부5

Kotlin 널 안정성(Null Safety) 코틀린 언어의 장점에서 코틀린은 널 안정성을 제공한다고 했는데, 그 이유에 대해서 정리해보려고 한다.코틀린 공식 문서 참고 1. Nullable types, non-nullable typesvar a: String = "abc"var b: String? = "abc"val al = a.lengthval bl = b.length // error -> variable 'b' can be null코틀린에선 변수를 선언할 때 null을 가질 수 있는 타입과 null을 가질 수 없는 타입을 따로 지정해줄 수 있다.b와 같이 nullable 타입으로 선언된 경우 에러가 발생한다. b의 메소드나 프로퍼티에 접근하기 위해선 어떻게 해야 할까? 2. 조건문에서 null 확인val b: String? = "Kotlin"i.. 2024. 9. 12.
Kotlin backing field 코틀린 공식 문서 참고 Propertyvar [: ] [= ] [] []initializer와 getter, setter는 옵션임코틀린에서는 프로퍼티에 대한 기본 접근자 메서드(getter, setter)를 자동으로 생성해줌 backing field란?backing field는 프로퍼티의 값을 메모리에 저장하기 위해 사용되는 필드코틀린은 프로퍼티에 backing field가 필요하면 자동으로 생성해줌  자동으로 backing field가 생성되는 경우코틀린이 backing field를 자동으로 생성해주는 경우는 아래와 같다.1. 적어도 하나의 접근자(getter, setter)가 기본 구현을 사용할 때 만약 프로퍼티의 getter, setter가 기본 구현을 사용한다면, 자동으로 backing.. 2024. 9. 12.
isEmpty, isBlank 차이 간단한 내용인데 헷갈릴 때가 있어서 정리해놓고자 한다. isEmpty- 빈 문자열("")인지 확인한다. isBlank- 빈 문자열("")이거나, 공백으로 이루어진 문자열("   ")인지 확인한다.  val str = " "println(str.isEmpty()) // falseprintln(str.isBlank()) // true val str = ""println(str.isEmpty()) // trueprintln(str.isBlank()) // true 따라서 빈 문자열인지 확인할 때 공백으로 이루어진 문자열을 포함하고 싶다면 isBlank를, 포함하고 싶지 않다면 isEmpty를 사용하면 된다 2024. 7. 27.
Kotlin Mutable, Immutable List Kotlin에는 두 가지 유형의 List가 있다1. 읽기 목적으로 사용되는 Immutable List(불변)2. 데이터를 쓸 수 있는 mutable List(가변) 잠깐 가변성과 불변성에 대해 알아보자가변성(Mutability)가변성은 상태를 가지는 경우를 말하는데, 아래와 같은 문제가 발생할 수 있다.- 멀티스레드에서 값을 보장하지 못함- 값의 예측이 어렵고 변경에 있어서 위험함- 테스트와 디버깅이 어려움- 상태 변경 발생 시 처리 필요 불변성(Immutability)함수형 프로그래밍에서는 불변성을 중요하게 생각함.Kotlin에서는 불변성을 강제하지는 않으나, 불변성을 권장하고 있음불변성이란, 상태를 변경하지 않는 것즉, 메모리의 특정 공간에 저장된 값을 변경하지 않는 것을 말함 불변성은 생성 시점 이.. 2024. 7. 26.
StringBuilder String과 StringBuilder의 차이점에 대해 알아보자 Stringstring은 내부에 value값이 final로 선언되어있는 불변 객체따라서 문자열을 변경해야하는 경우엔 기존에 참조하고 있던 곳의 값을 변경하는 것이 아니라, 변경된 문자열에 대한 string을 새로 생성하고 이 문자열로 참조를 바꾸는 식이렇게 되면 연산이 끝난 후 "hello"가 남게 된다.문자열 변경 연산이 많아질수록 메모리 관리에 좋지 않다. StringBuilderStringBuilder는 가변 객체String처럼 참조를 변경하는 식이 아니라, 참조되어있는 객체를 변경하는 식 따라서 문자열을 변경하는 작업이 많은 경우 StringBuilder를 사용하는 것이 메모리 효율 측면에서 더 좋음   StringBuilder 사용.. 2024. 7. 20.