java引用类型赋值注意特点
1.成员变量赋值
String s1 = “变量1”;
String s2 = s1;
此时s1对s2赋的值是一个引用地址值,也就是此时s1与s2拥有了同一个可以指向"变量1"的地址值,此时输出结果s1与s2都为"变量1",若String s2 = “变量2”,此时s2会在内存中创建新的引用地址值,所以此时输出结果s1指向的是"变量1",s2输出的结果指向的是"变量2"。
2.在方法中作为引用类型赋值
在这里一开始将tsd用set方法赋值,再将tsd赋值给tsd1,此时tsd与tsd1拥有了共同的引用地址值,两个引用类型指向了同一个内存地址存储的(18,林青霞)的值,然而当给tsd1赋值时,相当于给此时指向的内存地址存储的值赋值,改变了原来存储的值变为新的值(20,紫霞),注意,此时tsd也有指向内存地址存储的地址值,所以打印tsd的值和tsd1的值还是一样,因为tsd1赋新值时,改变的是内存指向存储的值,并没有改变内存指向地址值。若想要能够输出不同结果,可以将ToStringDemo tsd1 = new ToStringDemo();,创建一个新的对象,为其赋上一个新的地址值。
3.与基本类型赋值的区别
基本类型的赋值传递一般可以说叫做拷贝传递,就是将值拷贝一份,而与原来的值无关,那么就不会存在几个对象都指向同一个值的状态,而是每个对象都复制有一份,此时main中的a输出得是.3,而test中的a输出的是4.