美文网首页
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