java中的什么是值传递,什么是引用传递

  1. 值传递(Pass by Value):值传递意味着在方法调用时,实际参数的值被传递给方法中的形式参数,即在方法内部修改形参的值不会影响实参的值。Java中的基本数据类型(如int、float、double等)就是值传递的典型例子。

    java 复制代码
    public class Main {
        public static void main(String[] args) {
            int x = 10;
            modifyValue(x);
            System.out.println("Value after method call: " + x);
        }
    
        public static void modifyValue(int num) {
            num = num + 5;
            System.out.println("Value inside method: " + num);
        }
    }

    输出

    java 复制代码
    Value inside method: 15 
    Value after method call: 10
  2. 引用传递(Pass by Reference):引用传递是指在方法调用时,实际参数的地址被传递给了方法中的形式参数,即在方法内部修改形参的值会影响到实参。在Java中,对象引用是按值传递的,也就是说,虽然传递的是对象的引用,但是对对象属性的修改会影响到实际对象。

    java 复制代码
    public class Main {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder("Hello");
            modifyReference(sb);
            System.out.println("Value after method call: " + sb);
        }
    
        public static void modifyReference(StringBuilder builder) {
            builder.append(" World");
            System.out.println("Value inside method: " + builder);
        }
    }

    输出

    java 复制代码
    Value inside method: Hello World
    Value after method call: Hello World

    在这个例子中,虽然sb是按值传递给modifyReference方法的,但是由于传递的是对象引用,因此在方法内部对builder的修改会影响到实际对象sb

相关推荐
李子园的李9 分钟前
Java函数式接口——渐进式学习
java
running up13 分钟前
Spring Bean生命周期- BeanDefinition 加载与 BeanFactoryPostProcessor BeanPostProcessor
java·后端·spring
222you22 分钟前
Java线程的三种创建方式
java·开发语言
脸大是真的好~28 分钟前
计算机408基础相关面试题-备用,不推荐
java
云上漫步者28 分钟前
深度实战:Rust交叉编译适配OpenHarmony PC——unicode_width完整适配案例
开发语言·后端·rust·harmonyos
小费的部落28 分钟前
Excel 在Sheet3中 匹配Sheet1的A列和Sheet2的A列并处理空内容
java·前端·excel
咘噜biu30 分钟前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
漫漫求31 分钟前
Java内存模型【JMM】、JVM内存模型
java·开发语言·jvm
原来是好奇心32 分钟前
深入Spring Boot源码(五):外部化配置与Profile机制深度解析
java·源码·springboot
IT界的奇葩32 分钟前
OAuth2 单点登录流程图
java·流程图·oauth2·单点登录·sso