Java中传值和传引用
public class Demo01 { int a = 0; public static void main(String[] args) { Demo01 demo01 = new Demo01(); demo01.test(demo01.a); System.out.println(demo01.a);//0 demo01.test01(demo01); System.out.println(demo01.a);//1 } public void test(int a){//传递的是值 a = a=1; } public void test01(Demo01 s){//传递的是引用 s.a = s.a + 1; } }
在Java中只有传值这一个概念(实参将值传递给形参),但是test方法中传递的是形参的值,而不是形参的地址值,test01方法传递的是引用值(就是地址值)
我们可以看作方法中的形参复制了传递过来的实参的值。然后对这个值进行操作,如果传递过来的是基本数据类型,那么仅仅改变了传递过来的值,而没有改变实际值,如果传递过来的是地址值,那么对地址的改变就会直接哟影想实参的值