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

相关推荐
爱吃烤鸡翅的酸菜鱼4 分钟前
从数据库直连到缓存预热:城市列表查询的性能优化全流程
java·数据库·后端·spring·个人开发
Algebraaaaa4 分钟前
Qt中的字符串宏 | 编译期检查和运行期检查 | Qt信号与槽connect写法
开发语言·c++·qt
Red Car4 分钟前
javascript 性能优化实例一则
开发语言·javascript·ecmascript
友友马6 分钟前
『 QT 』Hello World控件实现指南
开发语言·qt
一只学java的小汉堡19 分钟前
Java 面试高频题:HashMap 与 ConcurrentHashMap 深度解析(含 JDK1.8 优化与线程安全原理)
java·开发语言·面试
huohaiyu1 小时前
Hashtable,HashMap,ConcurrentHashMap之间的区别
java·开发语言·多线程·哈希
信奥卷王2 小时前
[GESP202503 五级] 原根判断
java·数据结构·算法
小咕聊编程2 小时前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
Zz_waiting.2 小时前
Spring 原理
java·spring·spring自动管理
Predestination王瀞潞5 小时前
IO操作(Num22)
开发语言·c++