Kotlin 3

[kotlin] by로 보는 지연 초기화 by lazy 컴파일러 동작 방식

Kotlin에서는 val과 var로 변수를 선언할 수 있다. val는 변경 불가능한 참조를 저장하는 변수이고,어원은 value로, 자바에서 final 변수에 해당한다. var는 변경 가능한 참조를 저장하는 변수이고,어원은 variable로, 자바에서 일반 변수에 해당한다. val birthday: String = "2026.01.09"var age: Int = 0 즉, var인 일반적인 변수로 언제든 값을 수정할 수 있는 변수이며, val은 읽기 전용으로 한번 초기화하면 값이 변경되지 않는 변수인 것이다. 아 참고로, val 변수가 불변일지라도 참조에 대한 불변으로 참조를 가리치는 객체의 내부 값은 변경될 수 있다.즉, Array 같은 목록형 변수로 초기화된다면 처음 초기화 때의 목록과 다른 내용으..

Android/학습 2026.01.10

[Kotlin] Coroutine Flow란, 그리고 Flow, StateFlow, SharedFlow..

Coroutine Flow란?Flow는 Kotlin Coroutne 기반의 비동기 데이터 스트림 처리 도구이다. 데이터 스트림은 시간 흐름에 따라 연속적으로 발생하는 데이터를 순차적으로 처리하는 개념인데, Java의 Stream과 비슷한 개념이라고 생각하면 된다.Kotlin(함수형 언어)을 자주 사용하는 입장에서는 사실 익숙한 개념이다. Java의 Stream에 대한 간단한 예시List numbers = Arrays.asList(1, 2, 3, 4, 5);numbers.stream() .filter(n -> n % 2 == 0) // 짝수 필터링 .map(n -> n * n) // 제곱 .forEach(System.out::pr..

Android/학습 2025.07.06

[Kotlin] Kotlin Coroutine with Dispatcher

코루틴 CoroutineAndroid에서 비동기적으로 실행되는 코드를 단순화하는 데 사용할 수 있는 동시성(concurrency) 디자인 패턴이다.  동시성(Concurrency) vs 병렬성(Parallelism) 병렬성은 실제로 두 작업이 같이 처리되는 것을 뜻하고 동시성을 그 와는 다르게 두 작업이 번갈아가면서 실행되며 동시에 처리되는 것을 뜻한다. 실제로 A작업, B작업이 같이 처리되는 것이 아니라 A작업했다가 B작업했다가 돌아가면서 처리하는 것이다.실제 한 시점을 보면 하나의 작업만 처리되는 것을 알 수 있다. 코루틴은 이 동시성에 대한 디자인 패턴(솔루션)인 것인데,코루틴이 병렬성이 아닌 동시성 디자인 패턴인 건에 대해서는 코루틴의 동작 방식에 대해 이해하면 쉽다.  코루틴은 주로 경량 스레드..

Android/학습 2025.04.09