클래스가 메로리에 올라갈 때 자동적으로 생성되어 인스턴스를 생성하지 않아도 호출이 가능하다..public 생성자와 정적 팩토리 메소드중 어떤 것이 더 의미 설명이 잘 되어있는지 보면 정적 팩토리 메소드임을 알 수 있다. (애플컴퓨터? os는 mac이겠구나 ! 회사는 a
생성자를 사용할 수 있지만 Main 코드만 봤을때 생성자 안의 인자값이 무엇을 의미하는지 알 수 없다.매개변수를 받지 않는 생성자를 사용해서 인스턴스를 만들고, setter를 사용해서 필요한 필드만 설정하기인자값이 무엇을 의미하는지 알 수 있다.여러번의 호출을 거쳐야
EX) 맞춤법을 검사하고 싶은 언어에 맞는 사전을 사용할 수 있어야한다. 자원의 수나 의존 관계에 구애받지 않고 잘 작동한다.불변을 보장하여 같은 자원을 사용하려는 여러 클라이언트가 의존 객체들을 안심하고 공유할 수 있다.생성자, 빌더 모두에 똑같이 응용가능하다.클래스
아이템 6 - 불필요한 객체 생성을 피하라 📌 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 📌 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용 => 같은 가상 머신 안에서 이와 똑같은 문자열 리터럴
컴퓨터 과학에서 메모리 누수(memory leak) 현상은 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상 이다. 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비 된다. 즉, 더 이상 불필요한 메모리가 해제되지 않으면서 메모리
객체가 소멸 될 경우 호출 되는 메서드(객체 소멸자)예측할 수 없고 상황에 따라 위험할 수 있다.쓰지 말아야 한다.객체가 소멸 될 경우 호출 되는 메서드(객체 소멸자)자신을 수행할 스레드를 제어할 수 있다.즉각 수행되리라는 보장이 없다.쓰지 말아야 한다
예외 발생이나 메서드에서 반환되는 경우를 포함해서 자원이 제대로 닫힘을 보장하는 수단으로 사용했다.하지만 finally에서도 예외는 터질 수 있다.그렇게 된다면 첫번째 예외에 대한 정보는 두번째 예외에서 묻히게 된다.읽기 수월하고 문제를 진단하기에 좋다.꼭 회수해야하는
각 인스턴스가 본질적으로 고유하다.값을 표현하는 것이 아닌 동작하는 개체를 표현하는 클래스ex) Thread인스턴스의 논리적 동치성을 검사할 일이 없다.상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어 맞는다.클래스가 private이거나 package-p
equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야한다. 단, 애플리케이션을 다시 실행한다면 이 값이 달라져도 상관없다.equals(Object)가
간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야 한다.모든 하위 클래스에서 이 메서드를 재정의하라 객체를 println, printf, 문자열 연결 연산자, assert 구문에 넘길 때, 혹은 디버거가 객체를 출력할 때 자동으로 불린다 !!! \-> 즉, 직
잘 설계된 컴포넌트\-> 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리함오지 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않음시스템 개발 속도를 높인다. \-> 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다.시스템
java.awt.package 의 Point 클래스java.awt.package 의 Dimesion 클래스
[Effective Java] 아이템 17
[Effective Java] 아이템 18
[Effective Java] 아이템 19
자바 8에서 부터 기존 인터페이스에 메서드를 추가할 수 있게 되었다.인터페이스를 구현한 후 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 된다.하지만 모든 기존 구현체들과 매끄럽게 연동되리라는 보장은 없다.구현 클래스에 대해 아무것도 모른채 합의
[Effective Java] 아이템 22
[Effective Java] 아이템 23
[ Effective Java] 아이템 24
[Effective Java] 아이템 25