java函数传参传递的一定是值!

对于Java函数的参数传递,在Java当中,只会进行数值的传递。
普通好理解,像是int,double类型,传递进函数的一定是数值。

但是对于Java对象的传递,如何理解传递的是数值呢?
其实呀,Java对象的函数参数传递,传递的是引用,其实就是对象所在的内存地址,就是把对象所在的内存地址复制到一个 临时变量当中,传入了函数而已。

因此,在函数内部,可以根据这个引用去调用对象的各种方法。
但是如果对这个引用进行修改,对原本的对象肯定是没有任何影响的。
举个例子:

public class Main {
    
    

    public static void main(String[] args) {
    
    
        String a="aaa";
        changTest(a);
        System.out.println(a);
    }

    static void changTest(String s){
    
    
        s="haha";
    }
}

大家觉得changTest函数可以修改a字符串的内容吗?
肯定是不行的,所以输出的a,的内容,一定是"aaa"。

因为在调用changeTest函数的时候,向函数进行值的传递,也就是把String对象的地址传入给了s。
然后在changTest函数内部,将s又指向了一个新的对象"haha"。
但是这个过程对原先的a对象毫无影响。
以上。

猜你喜欢

转载自blog.csdn.net/xiaohaigary/article/details/113396491