举例说明,如下:
class Test
{
public static Test test=new Test();
public static int X=1;
public int Y=2;
}
经测试得之test.X=0;test.Y=2;
静态成员是按顺序执行的,且比非静态成员构造顺序优先,哪为什么非静态成员Y的值为2?
是Test.X吧. 要是你能test.X说明哪里有问题啦.
test.Y当然是要等于2的.
然后这些默认值赋值语句.在编译的时候都会放到默认构造函数里去.
所以也就没有什么按顺序执行的说法.对外面来说.都是一次性的.
总结:你的问题很怪.为什么Y值不应该为2?
是Text.text.X的值为0,Text.text.Y的值为2
@慢慢求学路: 可是没有Text.text.X啊.你只能Text.X的.
不好意思,打错字母了。测试结果是Test.test.X=0,Test.test.Y=2。就是创建Test类后,直接调用里面的第一个静态字段,然后测试其值
@慢慢求学路: 不是说了.没有Test.test.X 你的X是静态字段.不是成员字段.在Test.test里是点不出来的.
谢谢,弄明白问题所在了
你弄混了,
X是Test的成员,不是test的成员
结果是:Test.X=1;
Test.test.X(这个不存在)