본문 바로가기

java37

정적 팩터리 메서드 이펙티브 자바(Effective Java) 에서 언급하는 정적 팩토리 메서드 (static factory method)는 객체 생성을 위한 디자인 패턴의 일종 입니다. 이 방법은 생성자 대신 클래스 내부에 정적 메서드를 사용하여 객체를 반환합니다. 명시적 이름 사용 : 생성자에 비해, 정적 팩토리 메서드는 반환될 객체의 특성을 잘 설명하는 이름을 가질 수 있습니다. 예를 들어 'Order.createInstance' 은 이름만으로도 새로운 인터스턴스를 반환하는 것을 알 수 있습니다. 호출될 때마다 새로운 객체를 생성하지 않아도 됨 : 필요한 경우, 정적 팩토리 메서드는 항상 새로운 객체를 생성하지 않고, 미리 생성된 객체를 반환할 수 있습니다. 이는 메모리 사용 최적화에 도움을 줍니다. 반환 타입의 하위.. 2023. 12. 20.
final, 상수 final은 자바 프로그래밍 언어의 키워드로, 다양한 컨텍스트에서 사용될 수 있으며, 그 의미는 사용되는 컨텍스트에 따라 다릅니다. 변수, 메서드, 클래스에서 주로 사용됩니다. final 키워드 사용 법은 자바의 다형성과 캡슐화 원칙을 강화하고, 불변성(immutability)과 보안을 증진 시키는데 중요한 역할을 합니다. 불변 객체는 스레드 안전(thread-safe)하고, 사이드 이펙트(side-effects)를 줄이며, 코드의 안정성과 예측 가능성을 높입니다. 지역 변수에 사용될 경우 final 키워드가 지역 변수에 사용될 때, 해당 변수는 변경할 수 없는 상태가 됩니다. 이는 변수가 선언된 메서드 또는 블록 내에서만 적용됩니다. public void myMethod() { final int loc.. 2023. 12. 14.
static 자바에서 static 키워드는 주로 변수와 메서드에 사용되며, jvm 메서드 영역에서 관리되므로 jvm 로딩시 메모리에 저장 되게 됩니다. 이는 static 변수나 메서드가 특정 인스턴스에 속하는 것이 아니라 클래스 정의와 함께 존재한다는 의미 입니다. 정적 변수 ( Static 변수 ) static 변수는 클래스 레벨의 변수로, 클래스의 모든 인스턴스에 의해 공유 됩니다. 이러한 변수는 클래스가 메모리에 로드될 때 생성되고 프로그램 종료시 소멸됩니다. 모든 인스턴스가 같은 값을 공유합니다. 한 인스턴스에서 static 변수의 값을 변경하면 이 변경 사항이 모든 인스턴스에 반영 됩니다. 공통의 값을 모든 인스턴스가 공유해야 할 때 사용됩니다. 예를 들어 회사 이름, 버전 정보 등 정적 메서드 ( Stat.. 2023. 12. 13.
자바 메모리 구조 자바의 메모리 구조는 프로그램의 실행 동안 사용되는 다양한 종류의 데이터를 저장하고 관리하는 방식을 정의하며, 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다. 메서드 영역 ( Method Area ) 클래스 수준의 정보 ( 클래스 구조, 메소드 코드, 상수, 정적 변수 등) 을 저장한다. JVM 하나당 메서드 영역이 있으며, 모든 스레드가 이 영역을 공유 한다. 클래스 정보(구조) : 클래스의 실행 코드 ( 바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재한다. 클래스 구조(틀) 메서드의 코드, 생성자 정보, 상수 등 클래스와 관련된 모든 정보가 메서드 영역에 로딩된다. static 영역 : static 변수들을 보관한다. ( 변수와 메서드 ) 정적 변수는 클래스가 JVM.. 2023. 12. 13.