我们先从一段代码中了解面对对象中引用传递和按值传递
class Demo
{
int a ;
}
class Test
{
public static void update(Demo d){
d.a += 10;
}
public static void update(int a){
a += 10;
}
public static void main(String[] args)
{
Demo d = new Demo(); //创建对象
d.a = 10; //将调对象里的a赋值为10
update(d); //调用update方法并将对象d输入
System.out.println(d.a); //update方法执行后输出打印对象d中a的值
int a = 10; //创建int变量a并赋值为10
update(a); //调用update方法并输入a
System.out.println(a); //update方法执行后输出打印对象a的值
}
}
此时输出的结果为:
20
10
按值传递:
给变量赋值时,如果变量的数据类型属于8种基本数据类型,这时传递的是实际的常量 值;这种数据传递的方式叫做按值传递。
使用这种方式传递数据,修改一个变量的值,对其他变量没有影响;
引用传递:
给变量赋值时,如果变量的数据类型不属于8种基本数据类型(也就是引用),这时 的是堆内存中的地址;这种数据传递方式叫引用传递(按址传递)。
使用这种方式传递数据,通过一个变量修改数据,对其他拥有这个引用的变量,都有影响;