목록분류 전체보기 (198)
밤빵's 개발일지
데이터 클래스는 데이터를 저장하기 위한 목적으로 사용하는 클래스로, 기본적인 기능을 자동으로 제공해 준다. 자바에서 클래스를 작성할 때는 equals, hashCode, toString 등의 메서드를 직접 구현해야 했지만, 코틀린에서는 이러한 메서드들이 자동으로 생성되기 때문에 훨씬 간결하게 코드를 작성할 수 있다. ▶데이터 클래스란?데이터 클래스(Data Class)는 주로 데이터를 담기 위해 사용되는 클래스로, 자동으로 생성되는 기본 메서드들(equals, hashCode, toString, copy, componentN)을 제공한다. 이러한 기능 덕분에 데이터 모델을 작성할 때 불필요한 코드를 줄이고, 코드의 가독성을 높일 수 있다. 데이터 클래스는 코틀린에서 유용하게 쓰이며, 특히 간단한 데이터..
▶확장 함수란?확장 함수는 기존 클래스에 새로운 함수를 추가하는 것처럼 보이지만, 실제로는 그 클래스를 확장하지 않고도 외부에서 정의할 수 있는 함수이다. 이러한 기능 덕분에 기존 라이브러리나 클래스를 수정하지 않고도 필요에 따라 유연하게 기능을 확장할 수 있다. 이는 특히 라이브러리나 외부 클래스를 직접 수정할 수 없을 때 유용하다. 확장 함수는 자바의 유틸리티 클래스와 비슷한 역할을 한다. 예를 들어, 자바에서는 StringUtils 같은 클래스에서 문자열 관련 메서드를 추가할 수 있지만, 코틀린에서는 해당 기능을 String 클래스에 직접 확장 함수로 추가하여 더욱 직관적인 코드를 작성할 수 있다. ▶확장 함수의 기본 사용법확장 함수는 클래스 이름에 .을 붙여 마치 클래스의 멤버 메서드처럼 호출할 ..
▶코틀린의 함수 선언 방식코틀린에서 함수를 선언할 때는 fun 키워드를 사용한다. 자바의 메서드와 달리, 코틀린에서는 반환 타입을 함수 선언의 끝에 명시하, 함수 본문은 함수 선언부와 바로 이어서 쓸 수 있다. fun greet(name: String): String { return "Hello, $name!"}→ 코틀린에서 greet라는 이름의 함수를 선언하는 코드. 이 함수는 name이라는 String 타입의 인자를 받아서 문자열을 반환한다. 반환 타입은 함수 선언부의 마지막에 : 뒤에 명시되, 함수 본문은 중괄호 안에 작성된다. 자바에서는 반환 타입을 함수 선언의 앞에 명시하지만, 코틀린에서는 함수의 끝에 명시하는 것이 차이점이다. val greeting = greet("Kotlin")prin..
코틀린에서 제공하는 대표적인 null 처리 방법으로 Safe Call(?.), Elvis 연산자(?:), 그리고 Not-null Assertion(!!)이 있다. 오늘 개발일지에서는 이 세 가지 null 처리 방법의 구체적인 예시와 함께 차이점을 어제 작성한 개발일지 내용보다 조금 더 자세하게 정리해봤다. ▶Safe Call 연산자(?.)Safe Call 연산자 '?.'는 null일 가능성이 있는 객체에서 메서드나 프로퍼티에 접근할 때 사용하는 연산자이다. 객체가 null이 아니면 해당 메서드를 호출하거나 프로퍼티에 접근하고, 객체가 null이면 그냥 null을 반환한다. 이를 통해 null 체크를 간단하게 할 수 있다.var name: String? = "Kotlin"val length = name?..
NPE(NullPointerException)라는 에러는 변수나 객체가 null인 상태에서 메서드를 호출하거나 접근하려고 할 때 발생하는 대표적인 런타임 에러 중 하나다. 자바에서는 null 값을 허용하는 변수와 그렇지 않은 변수를 구분하지 않기 때문에 이 에러를 방지하기 위해 별도의 null 체크를 해야 한다.하지만 코틀린에서는 이러한 문제를 미리 방지할 수 있는 null 안전성 기능을 제공한다. ▶자바에서의 NPE 문제자바에서는 변수에 null 값을 할당하는 것이 기본적으로 허용된다. 따라서 null이 할당된 변수를 사용할 때 메서드를 호출하거나 필드에 접근하면 NullPointerException이 발생하게 된다.String name = null;System.out.println(name.leng..
자바를 공부하다가 코틀린이라는 언어를 처음 접하게 되면서 두 언어의 문법적인 차이점이 많이 보였다. 그 중에서도 변수 선언 방식이 코틀린과 자바 사이에서 가장 큰 차이 중 하나로 느껴졌다. 코틀린은 자바보다 더 간결하고 명확하게 변수를 선언할 수 있는 장점을 가지고 있고, 이러한 차이를 이해하면 코틀린의 효율성을 극대화할 수 있다. ▶자바의 변수 선언 방식자바에서 변수를 선언할 때는 타입을 명시적으로 지정해 주어야 한다. 자바는 강타입 언어이므로, 변수를 선언할 때 그 변수에 저장될 데이터의 타입을 명시해야 하고, 이후에는 해당 타입의 값만 저장할 수 있다.int age = 25; // 정수형 변수 선언String name = "John"; // 문자열 변수 선언boolean ..
▶var과 val의 차이var과 val은 코틀린에서 변수를 선언할 때 사용하는 두 가지 키워드이다. 이들은 모두 변수를 선언하는 데 사용되지만, 값의 변경 가능 여부에 따라 다르게 동작한다. → var:변수에 저장된 값을 변경할 수 있는 가변(mutable) 변수이다.→ val:변수에 저장된 값을 변경할 수 없는 불변(immutable) 변수이다. 자바에서는 변수를 선언할 때 기본적으로 값을 변경할 수 있지만, final 키워드를 사용하여 변수의 값을 한 번만 할당하고 변경하지 못하게 할 수 있다. 코틀린에서는 이 개념을 좀 더 명확하게 구분하기 위해 var과 val을 제공한다. 자바와 비교하자면, 'var'는 일반 변수, 'val'은 final 키워드가 적용된 변수라고 볼 수 있다. ▶varvar 키워..
대용량 데이터를 한 번에 처리하지 않고, 작은 단위로 나누어 작업하는 청크 기반 처리(Chunk-Based Processing)라는 개념을 알게 되고, 이 방식이 성능과 효율성에 어떤 장점이 있는지, 그리고 어떻게 구현할 수 있는지 궁금해졌다. ▶ 청크 기반 처리란?청크(Chunk)란 데이터의 큰 덩어리를 작은 단위로 나눈 것을 의미한다. 청크 기반 처리는 데이터를 한꺼번에 읽고 처리하는 대신, 일정 크기의 청크로 나누어 처리함으로써 메모리 사용을 절약하고 시스템 자원을 보다 효율적으로 활용할 수 있는 방법이다. 예를 들어, 수십만 건의 데이터가 있을 때 한 번에 모든 데이터를 메모리에 적재하여 처리하면 시스템에 무리가 가기 쉽다. 이 경우 데이터를 청크 단위로 읽고, 처리하고, 저장하여 효율적으로 작업..
코루틴의 핵심은 비동기성이다. 비동기 프로그래밍을 통해 여러 작업을 병렬적으로 처리할 수 있는데, 코루틴을 사용하면 복잡한 비동기 처리를 간결하게 구현할 수 있다. 코루틴은 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행할 수 있는 비동기 실행 구조를 제공한다. 비동기성은 주로 I/O 바운드 작업(파일 읽기/쓰기, 네트워크 요청 등)에서 활용된다. 예를 들어, 데이터베이스에서 데이터를 조회하는 작업을 실행할 때, 일반적인 동기 방식에서는 데이터를 모두 조회할 때까지 기다린 후 다음 작업으로 넘어가야 한다. 반면, 코루틴의 비동기성 덕분에 다른 작업을 수행하면서도 데이터 조회가 끝나는 시점에 결과를 받아와 활용할 수 있다. ▶ 코루틴의 비동기성 작동 방식→ 중단과 재개:코루틴의 suspend 함수는 ..
자바를 공부하면서 비동기 처리와 멀티스레딩의 중요성을 알게됐다. 자바에서는 비동기 처리를 위해 CompletableFuture나 ExecutorService와 같은 기능을 주로 사용하지만, 코드가 복잡해지고 관리하기 어렵다. 코틀린에서는 코루틴(Coroutine)이라는 기능을 제공하여 비동기 작업을 쉽게 처리할 수 있다고 한다. 코틀린의 코루틴은 비동기 프로그래밍을 훨씬 간단하고 직관적으로 구현할 수 있게 돕는 핵심 기능이다. ▶코루틴이란?코루틴은 경량 스레드라고도 불리고, 자바의 멀티스레드와 달리 스레드 대신 실행 단위를 더 작고 가볍게 나누어 비동기 작업을 처리할 수 있는 방식이다. 코루틴은 필요할 때만 CPU 리소스를 사용하고, 코드의 흐름을 중단하거나 재개할 수 있어 비동기 작업을 쉽게 처리할 수..