Java中变量的分类——局部变量、实例变量、静态变量

一. Java中变量的分类

    Java中变量根据声明位置不同可以分为:局部变量成员变量,成员变量如果使用static关键字修饰又称为静态成员变量,如果没有static修饰又称为实例成员变量。下面分别阐述一下他们三者之间联系和区别。

public class Variable {
    
    
    //静态成员变量(静态变量)
    static int x=10;
    //实例成员变量(成员变量)
    int y=20;

    public static void main(String[] args) {
    
    
        //局部变量
        int num=30;
    }
}

二 .局部变量、成员变量、静态变量三者的区别

变量 声明位置 内存位置 生命周期 初始化
局部变量 方法中或方法声明上(形参) 随着方法的调用而创建,随着方法的消失而消失 初始化必须赋值
实例变量 类中方法外 随着对象的创建而创建,随着对象的消失而消失 有默认初始化值
静态变量 类中方法外 方法区的静态区 随着类的加载而加载,随着类的消失而消失 有默认初始化

什么时候使用静态变量?

当一个类的所有对象的某个“属性值”不会随着对象的改变而变化时,为了节省堆内存,我们可以将该属性定义为类级别的属性,也就是声明为静态变量,上升为“整个族”的数据,这样的变量不需要创建对象直接使用“类名”即可访问。

成员变量 表面区别 使用场景 调用方法 内存位置
实例变量 无static修饰 对于类中每个对象都是特有的属性 只能通过对象名调用 堆区
静态变量 被static修饰 对于类中每个对象一致的属性 可以使用类名调用,也可以使用对象名调用(不推荐) 方法区的静态区

举例:

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