Java의 정적 키워드에는 두 가지 주요 기능이 있습니다.
첫 번째: 생성된 개체 수에 관계없이 특정 데이터 유형이나 개체에 대해 단일 저장 공간을 할당합니다.
둘째, 객체가 아닌 클래스와 연결된 메서드나 속성을 구현하세요
간단히 말하면 Java 언어에는 정적의 5가지 주요 용도가 있습니다: 멤버 변수, 멤버 메서드, 코드 블록. 내부 클래스 및 정적 가져오기 패키지.
기본 사용법:
정적 수정Member 변수: 이 멤버 변수는 클래스 변수에 속하며 클래스 외부의 새 인스턴스 없이 ClassName.attributeName을 통해 직접 참조할 수 있습니다.
정적 수정Member 메서드: 이 메서드는 클래스의 메서드에 속하며 클래스의 새 인스턴스가 필요 없이 ClassName.methodName을 통해 직접 참조할 수 있습니다.
정적 수정코드 블록: 클래스가 초기화될 때 한 번만 실행되며 로딩 순서는 클래스의 정적 리소스 정의 순서를 엄격히 따릅니다. 정적 코드 블록은 다음 용도로 사용될 수 있습니다. 이후에 정의된 정적 변수입니다. 할당되었지만 액세스할 수 없습니다. ;상위 클래스 코드 블록 -> 하위 클래스 코드 블록.
정적 수정내부 클래스: static은 일반 클래스를 수정할 수 없으며 내부 클래스만 수정할 수 있습니다. static으로 수정되는 내부 클래스 생성 방법: new OuterClass.InnerClass().
staticImport package: 구문은 "import static java.lang.Math.*"이므로 개인적으로 클래스 이름을 쓰지 않고도 Math 클래스의 정적 메서드를 클래스에서 직접 사용할 수 있습니다. 제 생각에는 특정 클래스를 자주 사용하면 편리하지만 가독성이 떨어진다고 생각합니다. 그리고 *
다음은 static
정적 수정 멤버 변수 및 멤버 메서드
의 다양한 사용 예입니다.
/** * * Created by ascend on 2017/6/9 13:51. */public class Test {public static void main(String[] args) throws ClassNotFoundException { Class.forName("net.liebao.test.A"); } }class A {static { System.out.println("A.static initializer"); }public A() { System.out.println("A.A"); } }
출력:
A.static initializer
결론 1: 정적 리소스는 클래스에 속하지만 클래스가 초기화될 때(새 항목보다 먼저) 클래스와 독립적입니다. forName("xxx") 클래스의 정적 리소스를 로드하지만 새 리소스는 없습니다.
결론 2: 정적 리소스(정적 멤버 변수, 정적 멤버 메서드, 아래와 동일)는 비정적 리소스만 새로 생성되므로 액세스할 수 없습니다. 반대로, 정적 리소스는 정적 리소스에 액세스할 수 없습니다.
결론 셋: 정적 자원은 정적 자원에 접근할 수 있지만, 정적 자원은 뒤에 정의된 정적 자원에 값을 할당할 수 있지만 뒤에 정의된 정적 자원에는 접근할 수 없다는 점에 유의해야 한다. 정적 리소스의 또 다른 일반적인 용도
는 싱글턴 모드를 정적으로 구현하는 것입니다.
우리 모두는 싱글턴 모드의 특징이 이 기능을 달성하기 위해 클래스가 하나의 인스턴스만 가질 수 있다는 것을 알고 있습니다. 클래스의 구조는 숨겨진 함수, 즉 생성자를 private으로 선언하고 객체를 생성하는 메서드를 제공해야 합니다. 생성된 객체는 private으로 선언되므로 외부 세계에서는 이 유형의 객체를 직접 생성할 수 없습니다. 이 목적을 달성하려면 객체 생성 방법을 정적으로 선언하면 됩니다.
class Singleton {private static Singleton instance = new Singleton();//私有化构造函数private Singleton(){}public static Singleton getInstance(){return instance; } }
위의 싱글톤은 다음과 같습니다. 모드는 배고픈 남자 모드입니다.
위 내용은 Java의 static 키워드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!