下面的java程序输出是100还是101呢,为什么

2024年11月17日 21:55
有5个网友回答
网友(1):

形参和实参的问题啊,楼主

modify(int a),,这个函数中的a只是该函数的形参,调用它的时候做的是值拷贝,也就是将静态全局的a的值拷贝给该函数的形参a,所以a++只是形参自增了一次,跟静态全局的a无关,当函数退出时该形参a被销毁,所以你的那个静态全局的a根本就没变化,还是100

网友(2):

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。

解答的很详细了!大哥求顶啊!

网友(3):

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
这样楼主能明白了么。。

网友(4):

a++ 是先返回a的值再++ 所以最后的结果为100
++a 是先做运算在返回

网友(5):

先加后算,先运算后加,