자바 향상 편(6)-키워드 static
3164 단어 static
자바 에 서 는 전역 변수의 개념 이 존재 하지 않 지만 우 리 는 static 을 통 해'가짜 전역'이라는 개념 을 실현 할 수 있 습 니 다.자바 에서 static 은'전역'또는'정적'이라는 뜻 을 나타 내 고 구성원 변수 와 구성원 방법 을 수식 할 수 있 습 니 다.물론 코드 블록 도 수식 할 수 있 습 니 다.
자바 는 메모 리 를 스 택 메모리 와 메모리 로 나 누 었 습 니 다.그 중에서 스 택 메모 리 는 기본 형식의 변수,배열 과 대상 의 인용 을 저장 하 는 데 사 용 됩 니 다.스 택 메모 리 는 주로 대상 을 저장 합 니 다.JVM 에서 클래스 를 불 러 올 때 static 수식 이 있 는 구성원 변수 와 구성원 방법 이 존재 한다 면 이러한 구성원 변수 와 구성원 방법 에 고정된 위치 에 고정 크기 의 메모리 영역 을 열 어 주 고 이러한'고정'기능 이 있 으 면 JVM 은 매우 편리 하 게 접근 할 수 있 습 니 다.또한 정적 인 구성원 변수 와 구성원 방법 이 역할 영역 이 나 오지 않 으 면 핸들 이 변 하지 않 습 니 다.이 동시에 static 에 포 함 된'정적'개념 은 그것 이 회복 할 수 없다 는 것 을 나타 낸다.즉,그곳 에서 네가 수정 하면 그 는 원래 의 모습 으로 돌아 가지 않 을 것 이다.네가 정리 하면 그 는 돌아 오지 않 을 것 이다.
또한 static 에 의 해 수 식 된 구성원 변수 와 구성원 방법 은 이러한 종류 에 독립 되 어 있 으 며 특정한 인 스 턴 스 변수 에 의존 하지 않 습 니 다.즉,이러한 모든 인 스 턴 스 에 의 해 공유 되 는 것 입 니 다.모든 인 스 턴 스 의 인용 은 같은 곳 을 가리 키 며,모든 인 스 턴 스 가 그 에 대한 수정 은 다른 인 스 턴 스 의 변 화 를 가 져 올 수 있 습 니 다.
public class User {
private static int userNumber = 0 ;
public User(){
userNumber ++;
}
public static void main(String[] args) {
User user1 = new User();
User user2 = new User();
System.out.println("user1 userNumber:" + User.userNumber);
System.out.println("user2 userNumber:" + User.userNumber);
}
}
------------
Output:
user1 userNumber:2
user2 userNumber:2
2.static 를 어떻게 사용 합 니까?
static 는 구성원 변수 와 구성원 방법 을 수식 하 는 데 사용 할 수 있 습 니 다.우 리 는 이 를 정적 변수 와 정적 방법 이 라 고 부 르 고 클래스 이름 을 통 해 직접 접근 할 수 있 습 니 다.
ClassName..propertyName
ClassName.methodName(……)
Static 수식 코드 블록 은 정적 코드 블록 을 표시 합 니 다.JVM 이 클래스 를 불 러 올 때 이 코드 를 실행 합 니 다.그 용도 가 매우 큽 니 다.(코드 블록 사용 에 대한 요 며칠 소개,주목 하 세 요)
2.1 정적 변수
static 수식 변 수 는 정적 변수 라 고 부 릅 니 다.static 로 수식 하지 않 은 변 수 는 인 스 턴 스 변수 라 고 부 릅 니 다.이들 의 차 이 는 다음 과 같 습 니 다.
정적 변 수 는 클래스 로 딩 이 완료 되면 서 초기 화 되 었 습 니 다.메모리 에 하나 밖 에 없 으 며 JVM 도 메모리 한 번 만 할당 할 수 있 습 니 다.또한 모든 인 스 턴 스 는 정적 변 수 를 공유 하고 클래스 이름 을 통 해 직접 접근 할 수 있 습 니 다.
그러나 인 스 턴 스 변 수 는 다 릅 니 다.인 스 턴 스 를 만 들 때마다 인 스 턴 스 변 수 를 만 들 고 이 인 스 턴 스 와 공생 합 니 다.
그래서 우 리 는 보통 이 두 가지 상황 에서 정적 변 수 를 사용한다.대상 간 에 데 이 터 를 공유 하고 접근 이 편리 하 다.
2.2 static 방법
static 수식 방법 은 정적 방법 이 라 고 부 릅 니 다.우 리 는 클래스 이름 을 통 해 직접 호출 합 니 다.그 는 클래스 로 딩 할 때 존재 하기 때문에 어떠한 인 스 턴 스 에 도 의존 하지 않 기 때문에 static 방법 은 반드시 실현 되 어야 한다.즉,그 는 추상 적 인 방법 abstract 가 될 수 없다 는 것 이다.
Static 방법 은 클래스 의 특수 한 방법 입 니 다.우 리 는 그들 이 진정 으로 필요 할 때 만 방법 을 static 로 설명 할 수 있 습 니 다.Math 와 같은 모든 방법 은 정적 static 입 니 다.
2.3,static 코드 블록
static 에 의 해 수 정 된 코드 블록 을 우 리 는 정적 코드 블록 이 라 고 부 릅 니 다.정적 코드 블록 은 클래스 에 따라 실 행 됩 니 다.그리고 그 는 마음대로 놓 을 수 있 고 이 모든 곳 에 존재 할 수 있 습 니 다.
3.Static 의 한계
Static 는 확실히 많은 역할 을 하지만 결함 도 있다.
1.static 변수 만 호출 할 수 있 습 니 다.
2.static 방법 만 사용 할 수 있 습 니 다.
3.어떤 형식 으로 도 this,슈퍼 를 인용 할 수 없습니다.
4.static 변 수 는 정의 할 때 초기 화 를 해 야 하고 초기 화 시간 은 비정 상 변수 보다 빨 라 야 합 니 다.
요약:변수,방법,코드 블록 이 든 static 로 수식 하면 클래스 가 불 러 올 때'준비 되 었 습 니 다'.즉,사용 되 거나 실 행 될 수 있 고 대상 에서 벗 어 나 실 행 될 수 있 습 니 다.반대로 static 이 없 으 면 대상 인 스 턴 스 에 의존 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다트 타이핑 💫 🌌 ✨Dart, tip kontrolünü iki farklı zamanda gerçekleştirir: • Kod derlendiğinde (kod yeniden yüklenir/veya önceden derlenir)...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.