[Effective Java] 14. pullic Class에서 public 멤버 사용 지양
public Point { public double x; public double y; }
public Point { public double x; public double y; }
잘 설계된 모듈은 구현 세부사항을 API 뒤에 잘 숨긴다. 즉, 정보 은닉(information hiding). 다른말로 캡슐화(encapsulation)가 잘 된 것이다. 1. 캡슐화의 중요성 모듈간의 캡슐화가 잘 된 경우 모듈사이 의존성을 낮춰서 개별적인 개발, 테스트, ...
1. 일반규약 보통 Object.toString()을 호출하면 아래와 같이 나온다.
객체를 생성하는 방법으로 생성자 외 정적 팩토리 메서드(Static Factory Method)를 사용하는 방법이 있다. 일반적인 생성자보다 장점이 많으니 무조건 생성자를 만들것이 아니라 static factory method를 만드는것을 고려해봐야 한다. singleto...
1. if문 개수에 따른 속도차이 결론적으로 if문의 개수에 따른 실행속도의 차이는 무시해도 될 만큼 작다. if문 자체보다 if문에 들어가는 조건을 비교하는 구문이 얼마나 빠르냐가 성능을 좌우한다. 2. switch-case 문에서의 String 비교 JDK 6까지 swit...
1. 자바의 GC(Garbage Collector) GC는 프로세스의 힙 영역에 할당된 메모리 중 더 이상 사용되지 않는 메모리를 주기적으로 회수함으로써 프로세스 메모리를 관리한다. 자바에서 GC는 다양한 형태가 있지만 공통적으로 다음과 같은 작업을 한다. 힙(heap...
시간 관련 메서드에 대표적으로 System.currentTimeMills() 가 있다. 이 메서드는 UTC 시간 표준을 따르면서 현재 시간을 ms로 리턴한다. System.nanoTime() 은 JDK 5.0에 추가된 메서드로 시간을 ns 로 리턴한다. 1. System....
변수는 메모리 공간에 할당된 이후 값이 변화될 수 있는 값이다.
자바는 Primitive type에 상응하는 각각의 Wrapper class를 가지고 있다. 이를 통해 기본 데이터 타입도 객체 단위로 처리할 수 있도록 하고, 기본 데이터를 다루는 여러 유용한 메서드를 사용할 수 있도록 한다. 1. Autoboxing, Auto-unboxi...
1. volatile 키워드란? volatile 역시 synchronized와 마찬가지로 동기화를 위한 키워드이다. volatile은 instance의 멤버 필드를 동기화하기 위한 키워드로 JDK 1.4까지 제대로 지원이 안되다가 1.5부터 다시 주목받게 되었다.