运算结果为啥是1 0 1?

public class Qcb90 {
    int a;
    int b;
    public void f(){
        a=0;
        b=0;
        int[] c={0};
        g(b,c);
        System.out.println(a+" "+b+" "+c[0]+" ");
    }
    
    public void g(int b,int[] c){
        a=1;
        b=1;
        c[0]=1;        
    }

    public static void main(String args[]){
        Qcb90 obj=new Qcb90();
        obj.f();
    }
}

g函数中,a是成员变量,b是参数变量,c是数组。

参数变量不能修改外部变量值,你这是值传递

运算结果就是101,因为b传的是局部变量。在g方法内部的b并不是成员变量b,而是g方法的局部变量,值不会传给成员变量b。所以打印结果是101;

g(b,c)中a是类的一个属性,修改为1,

由于b是形参,b的值不变为0,

数组的地址传过去所以c[0]修改为1,输出 1 0 1 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632