java static关键字

本文详细解析了Java中static关键字的使用,包括其在属性和方法声明中的作用,以及如何影响内存分配和对象间的数据共享。同时,讨论了static方法调用非静态方法的逻辑,并解答了关于构造函数与static之间的疑惑。

声明:此博客的资料来自mldn视频,仅供学习交流。

使用static声明属性

所有对象会共享static声明的属性,通过某个对象修改其中一个static属性,那么同类其他对象中的此属性也将被修改。
内存分析图
在这里插入图片描述
static声明的属性保存在全局数据区中,所有对象指向全局数据区的内容,故当全局数据区内容被修改后,会引起所有对象的static属性变化
PS:java中的内存区域
在这里插入图片描述
修改static属性时,最好用类名.属性名的方式去修改,这样逻辑较清晰。

static 声明方法

static关键字声明的方法,能够通过类名.方法名的方式调用。
注意:
static方法不能调用非静态的属性和方法。
因为static属性或方法可以在对象没有实例化的时候被调用,在没有实例化时,静态方法无法调用里面静态方法中不存在的方法(因为没有被实例化)

思考

main()也是静态方法,但是它为何可以调用对象中非静态的方法???
首先我们要知道static成员在被JVM加载加载时便会初始化,而对象是在被实例化时才被初始化。
我的理解:静态方法之所以无法访问非静态的方法和属性,是因为它们未被实例化,实例化一个对象后,对象的方法属性都已经存在,这个时候就可以调用了。
不过我还是有个小问题,实例化对象是调用构造函数,而构造函数并不是静态的,这该如何操作,我想跟new有关系,但不清楚new是如何操作的!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值