【JAVA】数据交换,java方法参数

还是先看题吧:

package test.java;

public class test8 {
    static String a = "yes";
    static String b ="no";
    public static void main(String[] args) {
        
        jh(a,b);
        System.out.println("a:" + a + "b:" + b);
    }

    private static void jh(String a, String b) {
        String c = a;
        a = b;
        b = c;
    }
}


print打印出来的 a 和 b 应该是什么值呢?

A: a:yes ; b:no

B: a:no ; b:yes


---------------------------------------------------------------------------------分割线-------------------------------------------------------------------------------

答案显而易见:A


那么问题来了,是为什么呢?


这个就得说到JAVA传递参数的方式了,很多程序提供了两种参数传递方式:1、值调用,2、引用调用

上面这段代码, jh 方法中的参数 a 和 b 被初始化为两个对象(a和b)的引用的拷贝,并没有调用声明的 a 和 b 的引用,

所以,在 jh 交换时,实质上交换的是这两个拷贝,并没有交易换原 a 和 b 的引用。

故答案是:A



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值