알고리즘 구현 문제를 풀다보면, 나는 값만 파라미터로 넘겼는데 배열의 원본 값이 바뀌는 경우가 있다. 이런 문제를 해결해 내 것으로 만들기 위해 얕은 복사와 깊은 복사를 알아보자.얕은 복사얕은 복사는 객체의 주소값을 복사하는 방식이다. 즉, 해당 객체는 원본 객체를 참조하게 된다. 기본 타입은 값이 복사되지만, 참조 타입은 주소값이 복사된다. ➡️ 자바에서 타입을 나눈 이유int[] arr1 = new int[4];arr1[0] = 1;arr1[1] = 2;arr1[2] = 3;arr1[3] = 4;int[] arr2 = arr1;arr2[0] = 4;System.out.println(Arrays.toString(arr1));System.out.println(Arrays.toString(arr2));우리..
Java
일급 컬렉션이란?일급 컬렉션은 컬렉션을 멤버 변수로 갖는 클래스를 만드는 규칙이다. `마틴 파울러`가 제한한 `컬렉션 캡슐화` 원칙에서 시작되었고 이후 컬렉션을 다루는 방식에 SOLID의 단일 책임 원칙(SRP)을 도입했다. 일급 컬렉션은 아래 3가지 조건을 만족하는 클래스다. 컬렉션을 멤버 변수로 갖는 클래스해당 클래스는 컬렉션을 private 필드로 가짐컬렉션에 관련된 로직만 수행하는 메서드를 가짐public class Student { private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; }}`St..
자바의 예외 계층 구조는 다음과 같다.오늘은 여기서 Checked Exception과 Unchecked Exception에 대해 알아보자.Checked ExceptionChecked Exception은 컴파일 시점에 확인되며, 반드시 처리해야 하는 예외이다. `Exception` 클래스를 상속하지만 `RuntimeException`을 상속하지 않은 모든 예외이다. 반드시 처리해야 하므로 try-catch문으로 예외를 처리하거나 throws를 선언해 호출자에게 예외를 위임한다. Unchecked ExceptionUnchecked Exception은 런타임 시점에 발생하며, 컴파일러가 처리 여부를 강제하지 않는다. `RuntimeException`을 상속하는 모든 예외이다. `Error`와 그 하위 클래스도..