形参和实参的问题啊,楼主
modify(int a),,这个函数中的a只是该函数的形参,调用它的时候做的是值拷贝,也就是将静态全局的a的值拷贝给该函数的形参a,所以a++只是形参自增了一次,跟静态全局的a无关,当函数退出时该形参a被销毁,所以你的那个静态全局的a根本就没变化,还是100
public class MyClass {
private static int a = 100;
public static void main(String[] args) {
modify(a);
System.out.println(a);
}
public static void modify(int a) {
a++;
}
}
你把它放到eclipse里面你就知道答案了!你会发现 public static void modify(int a) {
a++;
}这里面的两个a是 一样的黑白颜色,但是上面的3个a是蓝色,说明什么?前面3个引用了同一个,也就是静态的类变量( private static int a = 100;),而调用方法是以值传递的方式传进去的,传给modify方法的形参a,不管方法里面怎么操作,都是在操作局部变量,也就是形参a,类变量a是不会发生变化的,所以,你输出a的时候仍然还是100。
解答的很详细了!大哥求顶啊!
public class MyClass {
private static int a=100;
public static void main(String[] args){
modify(a);
System.out.println(a);
}
public static int modify(int a){
a++;
System.out.println(a);
return a;
}
}
结果为:
101
100
-------------------------------------------------------------------------------
public class MyClass {
private static int a=100;
public static void main(String[] args){
int b = modify(a);
System.out.println(a); //100
System.out.println(b); //101
}
public static int modify(int a){
a++;
System.out.println(a); //101
return a;
}
}
结果为:
101
100
101
这样楼主能明白了么。。
a++ 是先返回a的值再++ 所以最后的结果为100
++a 是先做运算在返回
先加后算,先运算后加,