ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

值传递与引用传递

2022-08-03 18:34:13  阅读:150  来源: 互联网

标签:name 传递 person 引用 public change


值传递

  1. 传递对象的一个副本,即使副本被改变,也不会影响源对象,因为值传递的时候,实际上是将实参的值复制一份给形参;
  2. 原始类型数据(整形、浮点型、字符型、布尔型)传递是值传递
package com.oop.Demo01;

public class Demo04 {
    public static void main(String[] args) {
        //值传递
        int a = 1;

        System.out.println(a);//1

        Demo04.change(a);

        System.out.println(a);//1
    }

    public static void change(int a) {
        a = 10;
    }
}

image
注:int数据类型使用的值传递,所以调用change方法没有返回值的话并不会改变原来a的值

引用传递

  1. 传递的并不是实际的对象,而是对象的引用,外部对引用对象的改变也会反映到源对象上,因为引用传递的时候,实际上是将实参的地址值复制一份给形参。
  2. 对象传递(数组、类、接口)是引用传递
package com.oop.Demo01;

public class Demo05 {
    public static void main(String[] args) {
        //引用传递
        Person person = new Person();
        System.out.println(person.name);//null

        Demo05.change(person);

        System.out.println(person.name);//helloman

    }

    public static void change(Person person) {
        person.name = "helloman";
    }

}

//定义一个类,有名字
class Person {
    String name;
}

image
注:String类型使用的是引用传递,将name指向的值在内存中作出了改变,所以change方法后类的名字发生了改变

标签:name,传递,person,引用,public,change
来源: https://www.cnblogs.com/xiaojian1995/p/16548221.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有