黑马程序员技术交流社区

标题: java中内存分布 [打印本页]

作者: 小子考驾照    时间: 2014-8-26 15:14
标题: java中内存分布
用static的修饰的变量和方法,实际上是指定了这些变量和方法在内存中的“固定位置”-static storage,可以理解为所有实例对象共有的内存空间。static变量有点类似于C中的全局变量的概念;静态表示的是内存的共享,就是它的每一个实例都指向同一个内存地址。把static拿来,就是告诉JVM它是静态的,它的引用(含间接引用)都是指向同一个位置,在那个地方,你把它改了,它就不会变成原样,你把它清理了,它就不会回来了。
         那静态变量与方法是在什么时候初始化的呢?对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。
         我们常可看到类似以下的例子来说明这个问题:
Java代码  
1.        class Student{   
2.                static int numberOfStudents=0;   
3.                Student()   
4.                {   
5.                         numberOfStudents++;   
6.                }   
7.        }  
         每一次创建一个新的Student实例时,成员numberOfStudents都会不断的递增,并且所有的Student实例都访问同一个 numberOfStudents变量,实际上int numberOfStudents变量在内存中只存储在一个位置上。
看了毕老师的视频,结合网上的,自己总结了一下,哈哈

作者: 天黑偷牛    时间: 2014-8-26 16:58
好,不错,不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2