Java基础之:值传递与引用传递

Java基础之:值传递与引用传递

什么是值传递和引用传递

  1. 值传递: 在java中,对于基本数据类型(byte, short ,int ,long, float ,double ,char ,boolean), 在进行传递 (赋值 , 方法传参), 进行的是 值传递( 即:拷贝一份数据), 两份数据是独立的.

  2. 引用传递: 在java中,对于引用数据类型(对象,数组), 在进行传递时(赋值, 方法传参), 进行的是引用传递 (即:传递的是一个引用(地址), 不会拷贝一份引用指向的数据) , 这就是引用传递

二者有什么区别

  1. 值传递 是 两个变量进行值传递时,因为是拷贝了一份独立数据,因此一个变量的修改,不会影响到另外一个 变量,比如 int n1 = 2; int n2 = n1; 这时 n1的变化,不会影响到 n2

  2. 引用传递 是 两个变量进行引用传递时, 因为传递的是引用(地址), 会让两个引用, 指向的是同一份数据空间, 因此,如果一个引用去修改它指向的数据, 则会影响到另一个引用指向的数据, 比如 Person p1 = new Person(); Person p2 = p1; p2.name = "tom"; 那么 p1.name 就会被修改成 tom

  3. 注意 一个引用的指向发生变化,不会影响到另外一个引用,比如:

    Person p1 = new Person();

    Person p2 = p1; p2 = null;

    对 p1 没有影响,仅将p2在栈空间中的内容置为null。

posted @ 2020-12-01 16:36  奋斗的小范同学  阅读(308)  评论(0编辑  收藏  举报