• 值传递和引用传递详解


    值传递

    敢问何为值传递?

    我们通过查询百度百科知道: 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数

    通俗来讲,值传递就是将当前参数的值复制了一份,将复制的这一份传给了函数去操作,无论你怎么操作都不会影响参数原本的值

    举栗:

    public static void main(String[] args) {
            /**
             * java值传递--->基本数据类型
             * 在调用函数时,会将实际参数复制一份副本
             * 将副本传入函数进行操作,在函数体中副本的值产生变化但不会影响实际参数
             */
            int number = 9;
            new Demo03().add(number);
            System.out.println(number);//---->9
        }
        public void add(int number){
            number +=1;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    引用传递

    那么敢问何为引用传递?

    再查百度百科:

    在C++中,函数参数的传递方式有引用传递。所谓引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

    虽说是c++,但是本质相同。我们知道引用数据类型分为两个部分分别是引用变量和对象,引用变量存放在中而对象则存储再堆内存中,引用变量指向堆中的一个对象。

    而当我们将引用数据类型传递给函数时,所传递出去的是一份引用变量的副本,而引用变量指向堆内存中的对象,所以函数操作该副本是,其实际参数也会受到影响

    public static void main(String[] args) {
            Student stus = new Student("小明", 20);
                change(stus);
            System.out.println(stus);//引用传递传递
            //--->Student{name='小红', age=20}
        }
        public static void change(Student student){
            student.setName("小红");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    特殊的String

    引用类型中的String的值是放在常量池中,我们改变副本的值不会影响到原来的值

    public static void main(String[] args) {
            String temp = "贴贴";
            change(temp);
            System.out.println(temp);
        }
        public static void change(String temp){
            temp = "抱抱";
        }
    /*输出:贴贴  */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    mybatis逆向工程(pom文件和generatorConfig.xml)的配置
    Docker与低代码开发:重塑软件开发的未来
    spring 三级缓存 循环依赖
    java毕业设计成品基于JSP实现的飞机票售票管理系统[包运行成功]
    探索人工智能的深度神经网络:理解、应用与未来
    【语义分割 01】Open MMLab介绍
    2022最新JUC+多线程面试题
    计算机网络概述
    【微服务】- 配置中心 - Nacos
    使用 Nacos 在 Spring Boot 项目中实现服务注册与配置管理
  • 原文地址:https://blog.csdn.net/yuqu1028/article/details/126748362