|
在 java(tm) 编程语言中,变量的初始化依赖于其所在的上下文。请看下面代码: int x; dog fido; 如果 x 和 fido 都是实例变量,他们就分别被自动初始化为 0 和 null 。null 是一个特殊的字面值,它能赋值给任何引用变量。 一般说来,如果实例变量在定义的时候没有被显式的初始化,那么 java 将变量自动初始化为 "似零" 的值,具体值由变量的数据类型决定: 请看下面这段程序: public class testvariableinit { public static void main(string args) { testclass tc = new testclass(); string lstr; // local variable int i; // local variable system.out.println("tc.istr = " + tc.istr); system.out.println("tc.i = " + tc.i); system.out.println("lstr = " + lstr); system.out.println("i = " + i); } 试图编译 testvariableinit 会产生下面的输出: d:\>javac testvariableinit.java testvariableinit.java:8: variable lstr may not have been initialized. system.out.println("lstr = " + lstr); ^ testvariableinit.java:9: variable i may not have been initialized. system.out.println("i = " + i); ^ 2 errors 对于此类情况,java 环境保证给出一个默认值,但是不允许你使用它,真是可笑!(如果一棵树掉到森林里,如果没有人听到落地声难道说它就没有发出声音吗?) 大部分的程序员都赞成为了可读性更好,实例变量应该初始化,并且局部变量必须初始化,这是为了使其他的程序员思路更清楚,也就是说,不管在哪儿,哪种 java 环境中,源代码都可以被编译,即便是有一天谁都不知道代码的编写者是谁的时候。
|
|