美文网首页
Java中是传参数还是引用传递?

Java中是传参数还是引用传递?

作者: 佳瑞Jarrett | 来源:发表于2021-01-26 21:39 被阅读0次

示例1: 基本类型数据作为参数传递

public class ParameterTransfer1 {
    public static void main(String[] args) {
        int num = 30;
        System.out.println("调用add方法前num=" + num);
        add(num);
        System.out.println("调用add方法后num=" + num);
    }

    public static void add(int param) {
        param = 100;
    }
}

结果:

调用add方法前num=30
调用add方法后num=30

示例2 对象作为参数传递

public class ParameterTransfer2 {

    public static void main(String[] args){
        String[] array = new String[]{"ceshi"};
        System.out.println("调用reset方法前array中的第0个元素的值是:" + array[0]);
        reset(array);
        System.out.println("调用reset方法后array中的第0个元素的值是:" + array[0]);
    }

    public static void reset(String[] param) {
        param[0] = "hello, world!";
    }
}

输出结果:

调用reset方法前array中的第0个元素的值是:ceshi
调用reset方法后array中的第0个元素的值是:hello, world!

无论是基本类型作为参数传递,还是对象作为参数传递,实际上传递的都是值,只是值的的形式不同而已。

第一个示例中用基本类型作为参数传递时,将栈内存中的值30传递到了add方法中。

第二个示例中用对象作为参数传递时,将栈内存中的值BE2500传递到了reset方法中。当用对象作为参数传递时,真正的值是放在堆内存中的,传递的是栈内存中的值,而栈内存中存放的是堆内存的地址,所以传递的就是堆内存的地址。

以上就是它们的区别。

更多源代码请访问:http://jiaruiblog.com
欢迎私聊探讨~

相关文章

网友评论

      本文标题:Java中是传参数还是引用传递?

      本文链接:https://www.haomeiwen.com/subject/swuvgktx.html