黑马程序员技术交流社区

标题: 关于static [打印本页]

作者: 小小程序员    时间: 2014-10-14 22:06
标题: 关于static
被static修饰的成员变量会随着类的加载而加载。
谁能告诉我这个加载到底是什么意思啊。是运行的意思吗??
困扰了我很久一直搞不懂

作者: 逍遥小seng    时间: 2014-10-14 22:56
JAVA虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。其实就是分配内存。
作者: 小小程序员    时间: 2014-10-14 23:27
逍遥小seng 发表于 2014-10-14 22:56
JAVA虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。其实就是分配内存。 ...

那加载的意思就是 实例化的过程吗
作者: 千里马    时间: 2014-10-14 23:33
静态的成员变量数据是随着类文件的加载而存在,随着类文件的消失而消失。
也可以理解为随着类文件的调用就存在了。你可以具体看看毕向东老师的基础教程讲解,他会用例子来演示,这样会理解更深刻一点!
作者: 逍遥小seng    时间: 2014-10-14 23:38
小小程序员 发表于 2014-10-14 23:27
那加载的意思就是 实例化的过程吗

不是的。实例化是针对实例变量的,每创建一个实例,就会为实例变量分配一次内存。static变量可以直接用类名调用,正是因为类加载就为static变量分配内存,可是类加载不一定会创建实例。所以static方法中不能调用实例方法,因为static加载时还没实例。不知道我说的够不够清楚。
作者: 980344791    时间: 2014-10-14 23:53
被static修饰的成员变量生命周期最长,加载是分配内存的意思,在没有实例化对象之前就可以进行直接调用。。。
作者: 踏云    时间: 2014-10-15 00:13
加载是,jvm将类文件加载到方法区的同时也会将静态的成员函数加载到方法区,把成员变量加载到方法区的静态数据共享区





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