并非如此 发表于 2007-8-29 13:45

你的解释的看起来有点问题。
>static变量在声明的时候是不占内存存储空间的。它会为初始值,或是Null
怎么可能不占,不然他该呆在什么地方,你理解的内存又是什么???,你的英语原话中没有提及此事。
>static变量不能被实例化,而是被初始化initialization
一般实例化只是指类变量的实例化,static一般是不用来声明类的(好像只能用于内部类),不存在实例化的问题,实例化的目的是为了动态的分配内存给一个类的实例,而static数据类型的内存分配是在加载类的时候,和实例化没有关系。即使没有实例的存在,只要有对类引用的存在,static变量也就一直存在,也就是和类共存亡。
>static变量被初始化后,不会重复占用内存存储空间
可以这么说,由于静态数据类型是在类加载时就初始化的,所以是自动初始化的,当然也可以手动得给一个初始值。静态数据类型的内存分配就固定的,只加载一次。

[ 本帖最后由 并非如此 于 2007-8-29 14:49 编辑 ]

奇朵啊朵 发表于 2007-8-30 10:54

奇朵啊朵 发表于 2007-8-30 10:59

并非如此 发表于 2007-8-30 12:52

//the static initialization occurs only if it’s necessary.
//If you don’t create a MyClass object and you never refer to MyClass.c2 or MyClass.c3, the static
// MyClass2 c2 and c3 will never be created. They are initialized only when the first MyClass object is
//created (or the first static access occurs). After that, the static objects are not reinitialized.
解释起来有点像文字游戏。
我已经说过,static是在类加载的时候初始化的,类一般在第一次引用或者是第一次实例化的时候加载,当然也由预先加载的类,和这段话并不冲突。

renzaijianghu 发表于 2007-8-30 17:42

只有类才能实例化,就是取得该类的一个实例. 初始化嘛,对于变量来说, 实际就是第一次赋值, 可以在声明的时候初始化, 也可以再以后. 这些跟java没有什么关系, 只不过是个通用的说法嘛. 这些概念性的东西没什么好研究的, 又不是考试, 会编程序了,自然就明白了嘛.

奇朵啊朵 发表于 2007-8-30 23:22

瓜瓜乐 发表于 2007-8-31 09:13

朵朵的功课做的很认真仔细~~~~$支持$ $支持$ :)
页: 1 [2]
查看完整版本: 一个关于Java的菜鸟问题