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处理静态内存布局的方法。
用图片可以更好的表述这个观点。见下图静态数据区那一部分。

JAVA随堂笔记课【四】:静态_第1张图片

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

静态函数

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

Integer.parseInt()

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

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

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

你可能感兴趣的:(JAVA随堂笔记课【四】:静态)