→static: static
Usage: 멤버(멤버 변수, 멤버 함수)를 수정하는 데 사용되는 수정자
class Person { String country = "cn"; }
/*Person 객체가 인스턴스화될 때마다 각 객체는 힙 메모리에 국가를 갖습니다
정적을 추가한 후에는 다른 개체에서 직접 호출할 수 있는 정적 국가가 메모리에 하나만 있으므로 메모리 공간을 절약할 수 있습니다.
멤버가 정적으로 수정되면 객체에서 호출하는 것 외에도 클래스 이름으로 직접 호출할 수도 있습니다. */
특별한 내용은 객체와 함께 저장됩니다
예를 들어 person 클래스에서는 모든 중국인이 자신의 이름을 갖고 있고 국적도 같은 중국인이므로 이름이 없는 static으로 국가를 정의할 수 있습니다.
→정적 기능
1. 클래스가 로드될 때 로드
즉, 클래스가 사라지면 정적이 사라지며, 이는 해당 클래스의 수명 주기가 가장 길다는 것을 나타냅니다
2.
3. 모든 객체에 공유됨 4. 클래스 이름으로 직접 호출 가능 →int age(멤버 변수) 인스턴스 변수와 static int age(정적 멤버 변수) 클래스 변수의 차이점 1. 인스턴스 변수는 객체가 생성되면서 힙 메모리에 저장되기 때문입니다.클래스 변수는 클래스가 로드될 때 메소드 영역에 존재합니다.2. 라이프 사이클인스턴스 변수는 객체가 사라지면서 사라집니다. 클래스 변수는 수명주기가 가장 길고 클래스가 사라지면 사라집니다→정적 사용1. 정적 메서드는 정적 멤버에만 액세스할 수 있습니다2 정적 메서드에서는 this 및 super 키워드를 정의할 수 없습니다. 의 정적 메소드에는 나타날 수 없습니다3. 주요 기능은 static→정적의 장점과 단점장점: 객체의 데이터를 별도의 공간에 저장하여 공간을 절약할 필요가 없습니다. 각 객체에서 클래스 이름(Person.country)으로 직접 호출할 수 있습니다. 단점: 수명 주기가 너무 깁니다. 접근이 제한되어 있습니다. (정적만 접근 가능)→정적은 언제 사용하는가? 두 가지 측면에서 출발해야 합니다정적 수정의 내용에는 멤버 변수와멤버 메소드
(함수)가 포함되기 때문에정적 변수(클래스 변수)는 언제 정의해야 할까요? 객체에 공유 데이터가 나타나면 데이터는 정적으로 수정됩니다.객체의 고유 데이터는 비정적으로 정의되어야 하며 힙 메모리에 존재해야 합니다.
정적 함수는 언제 정의해야 하나요? 함수가 비정적 데이터(객체의 특정 데이터)에 액세스하지 않는 경우 함수를 정적으로 정의할 수 있습니다. →정적 애플리케이션모든 애플리케이션에는 공통 기능이 있습니다이러한 기능은 재사용을 위해 독립적으로 추출 및 패키징할 수 있습니다. 모든 멤버 메서드를 정적으로 정의하고 클래스 이름으로 직접 호출하세요. 클래스에는 기본생성자
가 있습니다. 이 생성자의 권한은 해당 클래스가 속한 클래스와 일치합니다. 정적 코드 블록형식: { 정적 실행 문 코드 블록; }//특징: 클래스가 로드될 때 실행되며 한 번만 실행됩니다. 클래스를 초기화하는 데 사용됩니다. 다음 예:class StaticCode { static { System,out.println("a"); } }로딩 시퀀스 정적 코드 블록-->구성 코드 블록-->생성자 함수객체 초기화 프로세스Person p = new Person("zhangsan",20); 1 , new가 Person.class를 사용하기 때문입니다. 따라서 Person.class 파일이 먼저 발견되어 메모리에 로드됩니다. 2. 클래스에 정적 코드 블록(정적 코드 블록)을 실행하고, 존재하는 경우 Person.class 클래스를 초기화합니다. 3. 할당되지 않은 메모리 주소인 힙 메모리에 공간을 만듭니다. 힙 메모리에 개체의 고유한
속성
을 생성하고 기본 초기화를 수행합니다5. 속성을 명시적으로 초기화합니다 6. 해당 생성자를 사용하여 개체를 초기화합니다 . 8, 스택 메모리의 p 변수에 메모리 주소를 지불합니다위 내용은 PHP의 static 키워드의 특징과 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!