为了账号安全,请及时绑定邮箱和手机立即绑定

想问下大佬们,在一个public类中,有一个static定义的变量(已初始化),有一个public成员变量(已初始化),当其他类的对象调用这两个变量并赋予新值时,到底有什么区别

想问下大佬们,在一个public类中,有一个static定义的变量(已初始化),有一个public成员变量(已初始化),当其他类的对象调用这两个变量并赋予新值时,到底有什么区别

正在回答

3 回答

所属不同:

静态变量属于类,所以也称为为类变量;成员变量属于对象,所以也称为实例变量(对象变量)


在内存中位置不同:

静态变量存储于方法区里的静态区;成员变量存储于堆内存区


在内存中出现的时间不同:

静态变量随着类的加载而加载、随着类的消失而消失;

成员变量随着对象(也叫实例)的创建而存在,随着对象的消失而消失。


调用方式不同:

静态变量可以通过类名调用,也可以通过对象调用; 成员变量只能通过对象名调用。


------------------

在静态方法中是没有this关键字的,如何理解呢?

静态变量是随着类的加载而加载,this是随着对象的创建而存在。静态先于对象存在。

静态方法只能访问静态的成员变量和静态的成员方法。

非静态方法,既可以调用静态的成员变量也可以调用非静态的成员变量;

非静态方法既可以调用静态的成员方法,也可以调用非静态的成员方法。


1 回复 有任何疑惑可以回复我~

是的阿

0 回复 有任何疑惑可以回复我~

区别是: 被static修饰的那个变量 被更改了以后, 这个类创建其他的对象或者类名直接访问访问,都是被更改的值

而被没有被static修饰的那个变量 被一个对象更改了以后, 其他的对象去访问成员变量还是最初 初始化的值

4 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

想问下大佬们,在一个public类中,有一个static定义的变量(已初始化),有一个public成员变量(已初始化),当其他类的对象调用这两个变量并赋予新值时,到底有什么区别

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号