본문 바로가기

Java Study31

Shallow copy와 Deep copy Shallow copy와 Deep copy는 객체 복사 방식의 두 가지 유형으로, 객체의 필드를 어떻게 복사하는지에 따라 구분됩니다. 이 두 가지 복사 방법은 주로 객체 내부에 참조 타입 필드(다른 객체를 참조하는 필드)가 있을 때 차이를 보입니다.1. Shallow Copy (얕은 복사)Shallow copy는 객체의 최상위 필드만 복사하는 방식입니다. 기본 데이터 타입 필드(예: int, float)는 새롭게 복사되지만, 참조 타입 필드(객체를 참조하는 필드)는 참조값만 복사됩니다. 즉, 객체 내부에 또 다른 객체가 있으면 그 하위 객체는 복사되지 않고, 원본 객체와 복사된 객체가 동일한 하위 객체를 참조합니다.특징:복사 성능이 우수: 복사 과정에서 메모리 사용량이 적고 빠르게 수행됩니다.참조 공유:.. 2024. 9. 19.
어그리게이션(Aggregation)과 컴포지션(Composition) 어그리게이션(Aggregation)과 컴포지션(Composition)은 객체 지향 프로그래밍에서 클래스 간의 관계를 설명하는 두 가지 중요한 개념입니다. 두 개념 모두 "부분-전체 관계(Part-Whole Relationship)"를 나타내지만, 그 결합의 강도와 객체 간의 의존성 측면에서 차이가 있습니다.  1. 어그리게이션(Aggregation)어그리게이션은 객체 간의 약한 결합(Loose Coupling)을 나타내는 관계입니다. 이는 "부분-전체" 관계에서 부분(Part) 객체가 전체(Whole) 객체에 포함되지만, 두 객체는 독립적인 생명 주기를 가집니다. 즉, 전체 객체가 없어져도 부분 객체는 여전히 존재할 수 있습니다.특징:독립적인 생명 주기: 전체 객체가 삭제되어도 부분 객체는 계속 존재할 .. 2024. 8. 21.
파라미터화된 타입(Parameterized Type)과 원시 타입(Raw Type) 파라미터화된 타입(Parameterized Type)과 원시 타입(Raw Type)은 제네릭(Generics)과 관련된 두 가지 개념입니다. 이 두 개념은 제네릭 타입을 사용할 때 중요한 차이를 나타냅니다.   파라미터화된 타입 (Parameterized Type)파라미터화된 타입은 제네릭을 사용하여 정의된 클래스, 인터페이스, 또는 메서드에 구체적인 타입 매개변수를 지정한 타입을 말합니다. 제네릭 타입은 여러 타입을 처리할 수 있도록 일반화되어 있으며, 파라미터화된 타입을 통해 제네릭 클래스나 메서드의 타입 매개변수를 특정 타입으로 지정할 수 있습니다.예시:class Box { // 제네릭 클래스 정의 private T item; public void setItem(T item) { .. 2024. 8. 19.
제네릭 타입 매개변수(T)와 와일드카드(?)의 역할 제네릭 타입 매개변수(T)와 와일드카드(?)의 역할을 비교  제네릭 타입 매개변수 (T)정의: T는 제네릭 클래스나 메서드에서 타입을 일반화하여 사용할 수 있도록 만드는 타입 매개변수입니다. T는 특정 타입을 나타내며, 제네릭 클래스를 인스턴스화할 때 또는 제네릭 메서드를 호출할 때 그 타입이 결정됩니다.용도: T를 사용하면 메서드나 클래스가 여러 타입을 지원할 수 있지만, 그 타입이 명확하게 지정되며, 코드 내부에서 일관되게 사용할 수 있습니다.상한 또는 하한 바운드 사용: T extends Number와 같이 특정 타입의 상한 바운드(또는 하한 바운드)를 설정하여 타입 매개변수를 제한할 수 있습니다.예시:class Box { // T는 Box가 사용되는 동안 고유한 타입 private T ite.. 2024. 8. 19.
바운딩과 와일드카드의 차이 제네릭에서 바운딩(Bounding)과 와일드카드(Wildcards)는 자바의 타입 시스템에서 중요한 개념입니다. 두 개념 모두 제네릭을 사용할 때 타입의 유연성을 제공하지만, 그 사용 목적과 방법에는 차이가 있습니다.바운딩 (Bounding)바운딩은 제네릭 타입 매개변수에 대한 상한 또는 하한을 설정하는 것을 의미합니다. 제네릭 클래스나 메서드를 정의할 때, 특정 타입이나 그 서브타입만 사용할 수 있도록 제한할 수 있습니다. 바운딩은 주로 상한 바운드(Upper Bound)와 하한 바운드(Lower Bound)로 나뉩니다.상한 바운드 (Upper Bound)상한 바운드를 설정하면, 제네릭 타입 매개변수는 특정 클래스의 서브클래스나 해당 클래스 자체로 제한됩니다.예를 들어 T extends Number는 .. 2024. 8. 19.
List와 ArrayList 1. List 인터페이스정의: List는 Java의 컬렉션 프레임워크에 속하는 인터페이스입니다. List는 순서가 있는 요소의 컬렉션을 나타내며, 중복된 요소를 허용합니다. List 인터페이스는 컬렉션에서의 위치를 기반으로 요소에 접근하고 조작할 수 있는 다양한 메서드를 정의합니다.주요 특징:순서 유지: List는 요소들이 삽입된 순서를 유지합니다. 예를 들어, 리스트에 요소가 [A, B, C] 순서로 삽입되었다면, 이 순서는 유지됩니다.중복 허용: List는 동일한 요소가 여러 번 포함될 수 있습니다.인덱스 기반 접근: List 인터페이스는 인덱스를 사용하여 특정 위치의 요소를 빠르게 접근할 수 있는 메서드(get(int index))를 제공합니다.구현체: List 인터페이스를 구현하는 여러 클래스가 .. 2024. 8. 16.