或者将 j 的赋值语句放在第一句。即先将 j 赋值。再调用函数。作者: 邓杰 时间: 2012-6-21 16:39
/*
这是因为 new Test()的时候、 JVM是按照顺序来进行初始化的;也就是先初始化 i 和j ;而它们的初始化又是先建立一个int的对象;int的默认被化为0, 也就这个时候i和j的值都为0;
然后才会按照你指定的值给i和j赋值; 这个时候再按顺序再次进行赋值;i=getValue();而getValue()返回的j
的值;注意这个时候j的值还没有你给它赋的10;而是默认的初始化值0;因为j=10;要等i=getValue()执行完;
才会执行嘛;所以这个你时候你打印的结果就是0;验证:你把i=getValue()放到j=10;的下面就会打印10;
*/
public class Test {
private int i =getValue();
private int j =10;
//private int i =getValue();这样你就可以打印10;说明;i,j的初始化确实是按顺序执行的;
int getValue(){
return j;
}
public static void main(String[] args){
System.out.println(new Test().i);
}
} 作者: 常佳杰 时间: 2012-6-21 18:42
哥们这是你的代码我给你解释吧:
public class Test {
private int i =getValue();
private int j =10;
int getValue(){
return j;
}
public static void main(String[] args){
System.out.println(new Test().i);
}