我答的是7,刚才用Eclipse运行了下,运行结果是3,谁能给解释一下啊,谢谢public class test1 { static int i = 1;
static {
++i;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
increment (i,5);
display(i);
} static void increment(int n , int m){
n+=m;
}
static void display(int n){
System.out.println(n);
}
static{
++i;
}
}
static {
++i;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
increment (i,5);
display(i);
} static void increment(int n , int m){
n+=m;
}
static void display(int n){
System.out.println(n);
}
static{
++i;
}
}
2个静态初始化执行完之后 i=3在类被初始化完成后 i=3
而你的函数调用里,只是把i的值的拷贝传进去,改变的是形参的值,没有影响到 i 的值
因此打印出来还是上面2步执行玩之后的3
只有2个static里的++i起作用了
其他方法里的改变的只是形参的值