logo

Java의 정적과 비정적의 차이점

Java에서 클래스, 변수 및 메소드가 작동하는 방식을 이해하려면 정적 및 비정적 개념을 이해하는 것이 중요합니다. 비정적 멤버는 특정 클래스 인스턴스에 연결되는 반면 정적 멤버는 클래스에 연결됩니다. 이 섹션에서는 정적 Java 구성 요소와 비정적 Java 구성 요소를 비교하여 차이점과 잠재적인 응용 프로그램을 강조합니다.

와 관련된

공전: 정적 멤버(변수 및 메서드)는 개별 인스턴스가 아닌 클래스 자체와 연결됩니다.

비정적: 비정적 멤버는 클래스에서 생성된 개체에 연결되므로 클래스의 각 인스턴스에만 적용됩니다.

문자열 배열 자바의 경우

메모리 할당

공전: 정적 멤버에는 클래스 로딩 시 메모리가 한 번만 할당됩니다. 클래스의 모든 인스턴스에서 공유됩니다.

비정적: 비정적 멤버에는 클래스의 각 인스턴스에 대해 별도로 할당된 메모리가 있습니다. 각 개체에는 비정적 멤버의 자체 복사본이 있습니다.

접근 중

공전: 정적 멤버는 클래스 이름 뒤에 멤버 이름을 사용하여 직접 액세스할 수 있습니다(예: ClassName.memberName). 프로그램 내 어디에서나 액세스할 수 있습니다.

비정적: 비정적 멤버는 개체 참조와 멤버 이름(예: objectReference.memberName)을 사용하여 액세스됩니다. 이는 클래스의 특정 인스턴스에만 적용됩니다.

numpy 요약

초기화

공전: 정적 멤버는 일반적으로 프로그램 시작 중에 클래스가 메모리에 로드될 때 초기화됩니다. 초기화는 한 번만 발생합니다.

비정적: 비정적 멤버는 클래스의 각 인스턴스가 생성될 때 일반적으로 new 키워드를 사용하여 초기화됩니다. 초기화는 각 개체에 대해 별도로 발생합니다.

범위

공전: 정적 멤버는 전역 범위를 가지며 클래스 인스턴스를 만들지 않고도 프로그램 내 어디에서나 액세스할 수 있습니다.

비정적: 비정적 멤버는 로컬 범위를 가지며 클래스의 인스턴스를 통해서만 액세스할 수 있습니다. 객체를 생성하지 않으면 접근할 수 없습니다.

회원에 대한 액세스

공전: 정적 멤버는 동일한 클래스 내의 다른 정적 멤버에만 액세스할 수 있습니다. 비정적 멤버에 직접 액세스할 수는 없습니다.

비정적: 비정적 멤버는 동일한 클래스 내의 정적 멤버와 비정적 멤버 모두에 액세스할 수 있습니다. 모든 회원에게 직접 접근할 수 있습니다.

용법

공전: 정적 멤버는 일반적으로 개별 인스턴스에 국한되지 않는 유틸리티 메서드, 상수 또는 변수에 사용됩니다. 예를 들어, 수학 함수를 포함하는 Math 클래스입니다.

문자열은 모든 Java를 대체합니다.

비정적: 비정적 멤버는 각 개체에 특정한 데이터를 보유하므로 인스턴스별 동작에 사용됩니다. 예를 들어 각 객체의 고유 값을 저장하는 인스턴스 변수입니다.

메모리 효율성

공전: 정적 멤버는 생성된 인스턴스 수에 관계없이 메모리를 한 번만 소비합니다. 모든 개체에서 동일한 데이터를 공유해야 하는 경우 메모리 효율적일 수 있습니다.