【Java】一段代码理解static。

老生常谈了,static就是这样一个存在,开发中经常用到,但是也非常容易混淆他的概念,看完以下这段代码,我相信伙伴们可以更深入的了解它。

一:static含义

1.为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。

2.实现某个方法或属性与类而不是对象关联在一起

static可以修饰成员变量、成员方法、代码块、内部类、导入包

二:示例

//这段代码思考一下,最终输出的x值是多少?
class HasStatic{
    private static int x = 100;
    public static void main(String args[ ]){
        HasStatic hs1 = new HasStatic();
        hs1.x++;
        HasStatic hs2 = new HasStatic();
        hs2.x++;
        hs1=new HasStatic();
        hs1.x++;
        HasStatic.x--;
        System.out.println( "x=" +x);
    }
}

三:解析

因为x的 修饰符为 static 所以x为类变量,结合static含义,为x单独分配了一个空间,即对于所有的实例来说,他们访问的x为同一个x,类变量存储在方法区,不属于每个实例的私有,

刚开始x=100

调用hs1.x++   x为101;

调用hs2.x++   x为102;

调用hs1.x++   x为103 (此时hs1指向了一个新的HasStatic实例,但是依然访问的是同一个X)

调用HasStatic.x--  x为102

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mcom270

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值