Java의 Garbage Collector는 다 쓴 객체를 알아서 회수해줍니다. 그래서 자칫 메모리 관리를 더 이상 신경쓰지 않아도 된다고 오해할 수 있는데, 이는 사실이 아닙니다. 스택 자료구조를 간단히 구현한 아래의 코드를 보겠습니다. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; }..
똑같은 기능의 객체를 매번 생성하기보다는 하나의 객체를 재사용하면 분명히 성능적으로 이점을 얻을 수 있습니다. 예를들면 이전에 봤던 Boolean.valueOf를 생각해보면 됩니다. 좀더 와닿는 설명을 위해 아래와 같은 코드를 작성했습니다. 이 코드는 매우 극단적인 예시를 보여줍니다. public static void main(String[] args) { long bef; long aft; bef = System.currentTimeMillis(); for(int i=0; i 기본 타입을 언박싱이라고 부릅니다. JDK 1.5부터 이 연산을 자동으로 처리해주는데요, 이 두가지 박싱은 컴파일러가 처리해주며 내부적으로 구현 되어있습니다. 음.. 박싱과 언방식이 뭔지는 어렵지가 않은데, 굳이? 이 과정이 있어..
하나 이상의 자원에 의존하는 클래스를 만들때는 주의할 점이 있는데요, 예시로 간단하게 아래와 같은 코드를 작성해봤습니다. public class Delivery { private String type; private String area; public Delivery(String type, String area) { this.type = type; this.area = area; } public String getType() { return type; } public String getArea() { return area; } } 배달과 관련된 class를 작성해봤습니다. 필드로는 어떤 type의 음식을 판매하는지 나타내고 싶었고, area는 어떤 지역에 있는지 나타내고 싶었습니다. public clas..
'정적 메서드와 정적 필드만'을 담은 클래스를 만들라는 요구사항이 들어온다고 생각해봅시다. '객체 지향의 사실과 오해'를 당연히 읽은(?) 우리에게는 말도 안되는 요구사항입니다. 객체 지향의 세계에서는 모든 객체가 역할을 가지고 협력하는데, 역할을 수행할 객체가 없는 상황에서 역할을 기대하는 것은 더이상 객체지향을 지킨다고 볼 수 없습니다. 이런 생각을 가진 상태에서 아래의 코드를 봅시다. public static void main(String[] args) { Integer mini = Math.min(1, 2); System.out.println("mini = " + mini); } 자바가 제공하는 Math class의 min 메서드를 사용하는 간단한 코드입니다. 하지만, 우리는 Math 인스턴스를 ..
'싱글톤(Singleton)'이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 싱글톤을 만드는 방식은 일반적으로 두 가지를 사용하는데, 두 방식 모두 생성자를 private로 감춰두고, 생성된 유일한 인스턴스에 접근할 수 있는 수단을 만들어 놓습니다. 하나씩 살펴봅시다. public class Hello { public static final Hello INSTANCE = new Hello(); private Hello() {} public void print() { System.out.println("Hello World!"); } } 매우 일반적인 방법으로, private 생성자는 public static final 필드인 INSTANCE를 초기화할 때 딱 한번만 호출됩니다. 그리고 p..
이전에 살펴본 정적 팩토리 메서드 패턴은 분명 장점이 많습니다. 자바의 JDBC에서 사용하고 있는 패턴이기도 하고, OCP 원칙을 지키며 확장에도 열려있는 코드를 만들어줄 수 있습니다. 하지만, 정적 팩토리 메서드는 생성자를 사용할 경우 발생하는 제약 사항이 그대로 존재하는데요, 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 문제입니다. 예를들어 아래와 같은 회원 클래스가 있다고 가정해보겠습니다. public static class Users { private int age; // 필수 private String name; // 필수 private String nickname; // 선택 private String phone_number; // 선택 private String address; // ..
일반적으로 인스턴스의 생성은 public 생성자를 통해 이루어질 수 있습니다. public class ExampleStaticFactoryMethod { public static void main(String[] args) { Users user = new Users(26, "jo", "busan", "ds4ouj@naver.com"); } public static class Users { private int age; private String name; private String address; private String email; public Users(int age, String name, String address, String email) { this.age = age; this.name =..
- Total
- Today
- Yesterday
- OS
- GORM
- paging
- soft delete
- algorithm
- mmu
- spring
- network
- go
- cs
- Effective Java
- ARP
- Operating System
- 공지
- effective
- Database
- fiber
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |