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

Java基础:值传递和引用传递

Java在给方法传递参数时,有值传递和引用传递两种方式。

基本概念

值传递:传递对象的一个副本,即使副本被改变,也不会影响源对象,因为值传递的时候,实际上是将实参的值复制一份给形参。

引用传递:传递的并不是实际的对象,而是对象的引用,外部对引用对象的改变也会反映到源对象上,因为引用传递的时候,实际上是将实参的地址值复制一份给形参。

注意事项:对象传递(数组、类、接口)是引用传递,原始类型数据(整形、浮点型、字符型、布尔型)传递是值传递。 

值传递示例:

public class Hello {
    public static void main(String[] args) {
        Hello hello = new Hello();
        // 基本数据类型
        int i = 10;
        hello.pass(i);
        System.out.println("i = " + i);
    }
 
    public void pass(int pas) {
        pas = 20;
        System.out.println("pas = " + pas);
    }
}

 运行结果:

pas = 20
i = 10

引用传递示例:

public class ArrayListDemo {

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        change(arr);

        System.out.println(arr[0]);
    }

    public static void change(int[] array) {
        System.out.println(array[0]);
        array[0] = 0;
    }
}

运行结果:

1
0

注意事项:

在值传递过程中,方法声明的参数和方法调用的参数是两个不同的参数,他们分别指向结果相同,但是完全不同的对象。

在引用传递过程中, 方法声明的参数和方法调用的参数是两个不同的参数,但是指向同一个对象,当在方法内修改对象,会导致修改的内容被传递到方法外,处理类似于C++中方法传递的引用参数。


http://www.kler.cn/news/235044.html

相关文章:

  • 【C语言】C的整理记录
  • springboot/ssm大学生选修选课系统高校选课排课成绩管理系统Java系统
  • react中hook封装一个table组件 与 useColumns组件
  • Nginx报错合集(502 Bad Gateway,504 Gateway nginx/1.18.0 (Ubuntu) 等等报错)
  • 第三节 zookeeper基础应用与实战2
  • springboot181基于springboot的乐享田园系统
  • 【AIGC风格prompt深度指南】掌握绘画风格关键词,实现艺术模仿的革新实践
  • AutoSAR(基础入门篇)7.3-使用DEV配置SWCRTE
  • Visual Studio使用Git忽略不想上传到远程仓库的文件
  • 假期刷题打卡--Day26
  • 品牌如何营造生活感氛围?媒介盒子分享
  • 2024-02-11 Unity 编辑器开发之编辑器拓展2 —— 自定义窗口
  • 【JavaEE Spring 项目】博客系统
  • django密码管理器(创建项目)
  • 使用C++从零开始,自己写一个MiniWeb
  • Python在金融大数据分析中的AI应用实战
  • JavaScript学习之旅10------掌握jQuery:实用应用案例深度解析
  • 【深度学习 目标检测】R-CNN系列算法全面概述(一文搞懂R-CNN、Fast R-CNN、Faster R-CNN的来龙去脉)
  • tab 切换类交互功能实现
  • C语言每日一题(55)另一颗树的子树