当前位置: 首页 > news >正文

Java是值传递还是引用传递

在Java编程语言中,方法参数的传递总是按值传递的,这意味着不管一个变量是基本数据类型还是引用数据类型,传递的都是一个副本。

对于基本数据类型(如int、float等),这个副本就是数据值本身。因此,当你在方法内部改变这个值时,原始的变量不会受到影响。

对于引用数据类型(如对象),传递的是引用的副本,这个副本和原始引用指向同一个对象。因此,如果在方法内部改变了引用指向对象的状态(即改变了对象的字段),那么原始引用所指向的对象也会被改变。但如果你在方法内部改变了引用本身,使其指向一个新的对象,那么原始引用仍然指向方法外部的原始对象。

以下是一个简单的例子来说明这一点:

public class Test {
    public static void main(String[] args) {
        int num = 10;
        StringBuilder strBuilder = new StringBuilder("Hello");

        // 传递基本数据类型
        changePrimitive(num);
        System.out.println(num); // 输出10,num的值没有改变

        // 传递引用数据类型
        changeReference(strBuilder);
        System.out.println(strBuilder.toString()); // 输出Hello World,strBuilder的内容改变了

        // 再次传递引用数据类型
        changeReferenceItself(strBuilder);
        System.out.println(strBuilder.toString()); // 输出Hello World,strBuilder的内容没有改变
    }

    public static void changePrimitive(int num) {
        num = 20;
    }

    public static void changeReference(StringBuilder strBuilder) {
        strBuilder.append(" World");
    }

    public static void changeReferenceItself(StringBuilder strBuilder) {
        strBuilder = new StringBuilder("New Object");
    }
}

在这个例子中,changePrimitive 方法尝试改变基本数据类型的值,但原始的 num 变量不受影响。而 changeReference 方法改变了 strBuilder 引用指向对象的内容,所以原始的 strBuilder 也反映了这一变化。最后,changeReferenceItself 方法实际上改变了方法内部引用副本的指向,但原始的 strBuilder 引用仍然指向原来的对象,因此原始对象的内容没有改变。

相关文章:

  • 特征选择之特征重要性排序(基于树模型)
  • 如何用Kimi生成PPT?秒出PPT更高效!
  • 学习threejs,Animation、Core、CustomBlendingEquation、Renderer常量汇总
  • Java 依赖冲突终极解法:Maven 依赖树分析与强制版本锁定
  • 最左侧冗余覆盖子串
  • 【接口封装】——18、添加目录项列表响应
  • AMD(xilinx) FPGA书籍推荐
  • RabittMQ保证消息不丢失的几种手段
  • Spring Boot 项目中慢SQL优化方案
  • 基于微信小程序的超市购物系统+论文源码调试讲解
  • 【文心索引】搜索引擎测试报告
  • 【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
  • Trae IDE新建C#工程
  • 双目立体视觉(6.1)测距
  • 2025年科技趋势深度解析:从“人工智能+”到量子跃迁的技术革命
  • 练习题:72
  • 时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
  • 基于NIST后量子算法的混合加密系统
  • 动态规划背包刷题
  • 量化交易全面入门指南(2025最新版)
  • 怎么下载网站所有源码/百度广告点击软件
  • 做一个公司展示型网站多少钱/百度录入网站
  • dw怎么做鲜花网站/天津seo招聘
  • 出名的网站建设软件/seo技术好的培训机构
  • 郑州网站建设公司哪家专业/网站之家
  • wordpress和站点/企业推广软文