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遵循就近原则会自动访问离他最近的数据。
    关于变量的有效范围,我们记住一句话:出了大括号就不认识了
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值