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

来源:互联网 发布:青岛华为软件开发 编辑:程序博客网 时间:2024/06/05 11:10

还是先看题吧:

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



原创粉丝点击