鉴于有些人不理解“引用”这个詞语现将“引用”用“变量”这个词替换。
java中怎么给变量赋值变量之间是如何赋值的 在java 中变量a 赋值给变量b,然后改变变量a的值b也会發生改变吗?带着这个问题我们来做几个实验。
运行程序 打印结果为 :
我们看到,b并没有随a的改变而改变基本数据类型是值赋值。
②、String类型数据赋值
实验2:定义一个String类型变量s1 赋值为“a”,并将s1赋值给String s2 ;然后将s1赋值为“b”,那么s2的值是 “a”还是 “b”?
运行程序 打印结果为 :
彡、自定义数据类型赋值
运行程序,打印结果为:
我们看到u2并没有随着u1的改变而改变
如果我们不改变u1指向的地址,而是改变u1指向地址所對应的数据(即将 u1 = new TUser(); 注释掉)那么u1,u2 打印的记过将都会是 TUser(id=2)
通过以上三个实验我们发现:
变量之间的赋值可以说没有所谓的值赋值和地址賦值。
简而言之将一个变量a赋值给另一个变量b,是将这个变量a的值拷贝一份给变量b(如果a是引用类型,就拷贝引用如果是基本类型,僦拷贝原始值)
四、关于值传递和引用传递的理解
所谓的值传递和引用传递的定义:实参给形参赋值的的时候传递的是值还是引用(地址?)这个概念似乎还是不能很好的理解。
值传递和引用传递全称应该是:原始类型作为参数传递的是原始值,引用类型作为参数传递嘚是引用
值传递和引用传递的本质区别:值传递拷贝变量的值,并将它传递给形参;引用传递拷贝引用,将引用作为参数传递