[EffectiveJava] item 61. 박싱된 기본 타입보다는 기본 타입을 사용하라
·
Backend/Java
자바의 데이터 타입은 크게 두 가지로 나눌 수 있다1. 기본 타입 (원시 타입, Primitive type)int, double, boolean …2. 참조 타입 (Reference type)String, List, enum, class, interface …각각의 기본 타입에 대응하는 참조 타입이 하나씩 존재이를 박싱된 기본 타입(Wrapper Class) 이라고 한다 기본 타입과 박싱된 기본 타입의 차이기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 대해 식별성이라는 속성을 가진다.박싱된 기본 타입의 두 인스턴스는 값이 같아도 다르다고 식별될 수 있다.기본 타입의 값은 언제나 유효하나, 박싱된 기본 타입은 null 값을 가질 수 있다.기본 타입이 박싱된 기본 타입보다 시간과 메모리 사용에 ..
[EffectiveJava] item 64. 객체는 클래스가 아닌 인터페이스로 참조하라
·
Backend/Java
💡객체는 클래스가 아닌 인터페이스로 참조하라이 원칙을 따르면 코드의 유연성이 증가하고, 유지보수가 쉬워지며, 구현 교체가 간편해진다.적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라적합한 인터페이스가 없다면 클래스의 계층구조 중 필요한 기능을 만족하는 가장 덜 구체적인(상위의) 클래스를 타입으로 사용하자왜 인터페이스로 참조해야 할까?1. 구현 교체가 쉽다// 좋은 예: 인터페이스를 타입으로 사용Set sonSet = new LinkedHashSet();나중에 구현체를 변경할 때, 아래처럼 생성자만 바꾸면 된다.Set sonSet = new HashSet();하지만 실제 클래스(LinkedHashSet)로 사용하면// 나쁜 예: 클래스를 타입으로 사용L..
[EffectiveJava] Item 7. 다 쓴 객체 참조를 해제하라
·
Backend/Java
메모리 누수를 주의해야 한다.자바에서는 가비지 컬렉터가 다쓴 객체를 알아서 회수해간다 하지만 그렇다고해서 메모리 관리에 신경쓰지 않으면 안된다. 메모리 누수가 발생하는 프로그램을 오래 실행하다보면 점차 가비지 컬렉션 활동과 메모리 사용량이 늘어나 결국 성능이 저하되거나 메모리초과 오류(OufOfMemoryError) 가 발생할 수 있다.[메모리 누수가 일어나는 스택 구현]public class StackMemoryLeak { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = n..