JAVA随堂笔记课【四】:静态

静态变量的内存布局

静态,static。
搬上之前的Car类代码

class Car{
    String brand;
    int price;

    void run();
    static int count;    //多了一个static
}

不难发现吧?多了一个static int count。
那么问题来了,变量count在内存中放在什么地方?

这里写图片描述

首先肯定不能放在对象里。当我们创建两个Car的时候,就会有两个count。当对其中一个Car的count有++处理的时候,另一个Car不变。因为根本就不共用一块内存,所以这种做法不是静态变量的内存布局

那么,我们能不能在这段内存空间内,新开辟一块空间出来,专门放静态变量?事实上,这就是JAVA处理静态内存布局的方法。
用图片可以更好的表述这个观点。见下图静态数据区那一部分。

这里写图片描述

这样在程序运行的时候,不管是堆中的哪个Car调用了count,都是共用一个静态数据区。
这也是为什么count变量不会在每次对象构造/函数执行的时候都初始化的原因。
静态变量根本就不是这个对象的东西,而是从数据区拿过来用。


静态函数

静态数据区除了能存放静态变量,还能存放静态函数。
道理是一样的,只不过把整个一个函数都放在了静态数据区内。
这样的例子有很多。比如当我们使用强制转换整形int的时候执行的代码:

Integer.parseInt()

这个parseInt就是Integer类里的静态函数之一。

静态函数的作用一时半会总结不出来,用途很多。日后能总结出来再写吧。


就这样。这节课只上了一个小时,有点短。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值