참조 3

[Kotlin] 코틀린의 원시 타입

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 원시(Primitive) 타입 자바는 `int` 등의 원시(Primitive) 타입 과 `String` 등의 참조(Reference) 타입을 구분한다. 원시 타입에는 변수에 값이 그대로 들어간다. 참조 타입에는 메모리 상의 객체의 위치가 변수에 들어간다. 자바의 원시 타입은 컬렉션에 넣을 수 없다. 또한 원시 타입의 멤버, 확장 메서드를 호출할 수 없다. 위와 같은 경우에는 `java.lang.Integer` 와 같은 참조 타입이 필요하다. 참조 타입은 원시 타입 값을 감싸서 사용하는 것이다. (`int` 를 감싼 `Integer` 를 컬렉션에 넣기 : `Collection`) 하지만 코틀..

Kotlin 2024.01.18

[Kotlin] 모든 클래스가 정의해야 하는 메서드 toString, equals, hashCode

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 자바와 마찬가지로 코틀린 클래스도 `toString`, `equlas`, `hashCode` 등을 오버라이드 할 수 있다. 이런 메서드들을 알아보면서 아래 `Client` 라는 클래스를 만들어서 예제에 사용하자. class Client(val name: String, val postalCode: Int) toString(): 문자열 표현 자바처럼 코틀린의 모든 클래스도 인스턴스의 문자열 표현을 얻을 방법을 제공한다. 주로 디버깅과 로깅 시 이 메서드를 사용한다. 기본 제공되는 객체의 문자열 표현은 `Client@5e9f23b4` 같은 방식이다. 이는 디버깅, 로깅 시 유용하지 않으며, `t..

Kotlin 2024.01.09

[Kotlin] inner class & nested class 자바와 비교해서 (feat. 직렬화)

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 자바처럼 코틀린에서도 클래스 안에 다른 클래스를 선언할 수 있다. 이것으로 `helper 클래스`를 캡슐화하거나, 코드 정의를 그 코드를 사용하는 곳 가까이에 두고 싶을 때 유용하다. 클래스 A 안에 다른 클래스 B 를 정의할 때 B 는 두 가지 유형으로 나뉜다. `nested class` 바깥쪽 클래스에 대해 참조를 저장하지 않는다. `inner class` 바깥쪽 클래스에 대한 참조를 저장한다. 자바와 달리 코틀린에서는, 안쪽에 있는 클래스는 디폴트로 바깥쪽 클래스 인스턴스에 대한 접근 권한이 없는 `nested class` 이다. 직렬화를 통해 inner / nested class 테..

Kotlin 2024.01.06