其他分享
首页 > 其他分享> > 值传递与引用传递

值传递与引用传递

作者:互联网

值传递

  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