1. 자바에서 변수 분류
자바의 변수는 선언 위치에 따라 지역 변수 와 멤버 변수로 나눌 수 있으며 , 정적 키워드로 멤버 변수를 수정하면 정적 멤버 변수 라고도하며, 정적 수정이없는 경우에도 호출됩니다. 인스턴스 멤버 변수 . 다음은 세 가지의 연결 및 차이점에 대해 설명합니다.
public class Variable {
//静态成员变量(静态变量)
static int x=10;
//实例成员变量(成员变量)
int y=20;
public static void main(String[] args) {
//局部变量
int num=30;
}
}
2. 지역 변수, 멤버 변수 및 정적 변수의 차이점
변하기 쉬운 | 위치 선언 | 메모리 위치 | 라이프 사이클 | 초기화 |
---|---|---|---|---|
지역 변수 | 메서드 또는 메서드 선언 (매개 변수) | 스택 | 메서드가 호출되면 생성되고 메서드가 사라지면 사라집니다. | 초기화를 지정해야합니다. |
인스턴스 변수 | 클래스의 외부 메서드 | 더미 | 개체가 생성되면 생성되고 개체가 사라지면 사라집니다. | 기본 초기화 값이 있습니다. |
정적 변수 | 클래스의 외부 메서드 | 정적 영역 | 클래스가로드되면로드하고 클래스가 사라지면 사라집니다. | 기본 초기화 있음 |
정적 변수는 언제 사용합니까?
클래스의 모든 개체의 특정 "속성 값"이 개체의 변경에 따라 변경되지 않는 경우 힙 메모리를 절약하기 위해 속성을 클래스 수준 속성으로 정의 할 수 있습니다. 즉,이를 정적 속성으로 선언 할 수 있습니다. 변수 및 "전체 패밀리"데이터로 증가하면 이러한 변수는 개체를 생성하지 않고 "클래스 이름"을 사용하여 직접 액세스 할 수 있습니다.
멤버 변수 | 표면 차이 | 사용할 장면 | 호출 방법 | 메모리 위치 |
---|---|---|---|---|
인스턴스 변수 | 정적 수정 없음 | 클래스의 모든 개체에 대해고유 한 속성 | 개체 이름으로 만 호출 할 수 있습니다. | 힙 영역 |
정적 변수 | 정적에 의해 수정 됨 | 클래스의 각 개체에 대해일관된 속성 | 호출 할 클래스 이름을 사용할 수 있으며 호출 할 객체 이름을 사용할 수도 있습니다 (권장되지 않음). | 정적 영역 |
예를 들면 :
public class ManTest {
public static void main(String[] args) {
Man man=new Man("小明");
//实例变量使用对象名调用
System.out.println("名字"+man.name);
//静态变量可使用类名调用(推荐)
System.out.println("性别"+Man.sex);
//静态变量也可以通过对象名调用(不推荐)
System.out.println("性别"+man.sex);
}
}
class Man{
//实例变量
String name;
//静态变量
static char sex='男';
Man(){
}
Man(String name) {
this.name = name;
}
}
몇 가지 참고 사항
동일한 지역 변수 및 변수 이름의 멤버 가 근접성 원리를 사용하여 메서드에서 사용할 때 근접성 원리.- 범위
동일한 도메인에있는 변수 이름은 같은 이름을 가질 수 없습니다. 다른 도메인 변수 이름은 동일 할 수 있습니다. Java는 근접성 원칙을 따르며 가장 가까운 데이터에 자동으로 액세스합니다.
유효한 변수 범위와 관련하여 한 문장을 기억하십시오 . 중괄호 뒤에는 인식 할 수 없습니다 .