자바 로컬 변수, 인스턴스 변수, 정적 변수의 변수 분류

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;
    }
}

몇 가지 참고 사항


  1.   동일한 지역 변수 및 변수 이름의 멤버 가 근접성 원리를 사용하여 메서드에서 사용할 때 근접성 원리.
  2. 범위
      동일한 도메인에있는 변수 이름은 같은 이름을 가질 수 없습니다. 다른 도메인 변수 이름은 동일 할 수 있습니다. Java는 근접성 원칙을 따르며 가장 가까운 데이터에 자동으로 액세스합니다.
    유효한 변수 범위와 관련하여 한 문장을 기억하십시오 . 중괄호 뒤에는 인식수 없습니다 .

추천

출처blog.csdn.net/m0_46988935/article/details/109995487