Java中静态成员变量的内部调用
前一个成员变量调用其后的成员变量
例如:
1 | public static final Object A = B; |
这种显然是不行的, 编译都通不过, 而下面一种就有点不一样了
前成员变量在静态方法中调用其后的成员变量
例如:
1 | public class Test { |
此时编译正常但是, 打印一下A看看:
1 | System.out.println(Test.A); // null |
发现A是null
, 因为此时B还未初始化, 但是当把B的类型改为String
时
1 | public class Test { |
此时A的值就不是null
1 | System.out.println(Test.A); // "String B" |
这是因为Java的静态成员变量加载时类型为基本类型和String, 并且赋值为常量表达式的成员变量
的加载顺序优与其他
常量表达式指能立即得出的运算 包括普通运算以及字符串运算
当静态方法太复杂的时候就可能会碰到这种问题, 而且难找到原因所在