这种问题我想过,只存在于
class T{
pulbic final T t1;
public final T t2;
}
这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况,
而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的
这就是为什么必须static才可以存在的原因
[/quote]
有点明白了,如果第一次对t1和t2初始化的时候,t1和t2 指向一片内存区域,由于声明为static 当t1和t2 递归初始化时,还是指向同一片区域 ,不知道这么想对不对。。[/quote]
NONONO,你可把类内部的静态变量简单的看做存储对象的全局变量,放哪儿都可以,放其他类里也是可以的,只是因为java没有全局变量,所以必须得放到类的内部。别被同名给迷惑了~
这种问题我想过,只存在于
class T{
pulbic final T t1;
public final T t2;
}
这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况,
而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的
这就是为什么必须static才可以存在的原因
[/quote]
有点明白了,如果第一次对t1和t2初始化的时候,t1和t2 指向一片内存区域,由于声明为static 当t1和t2 递归初始化时,还是指向同一片区域 ,不知道这么想对不对。。
这种问题我想过,只存在于
class T{
pulbic final T t1;
public final T t2;
}
这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况,
而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的
这就是为什么必须static才可以存在的原因