67,513
社区成员
发帖
与我相关
我的任务
分享
public static void swap(Person a,Person b){
Person tmp = a;
a = b;
b = tmp;
}
如果java采用的引用调用,那么这个方法就可以实现交换数据的效果:
Person a = new Person("张三");
Person b = new Person("李四");
swap(a,b);
但是实际情况是:并没有!
所以实际上,对象引用采用的依然是值传递,只不过这个值是对象的引用罢了。
所以在java中,可以“引用传递改变”的是对象的状态,而不是这个对象。
假设String有一个setValue()的方法,我们是否可以这样:
public void change(String str) {
str.setValue(123);
}
但实际情况是:Integer、Boolean等包装类,String等都是不可变类,他们没有提供任何修改自身状态(属性、域)的方法,即不可变类。
public class Student extends Person{
}
可以说Student继承自Object类, 也可以说继承自Person类, 但是说继承自Person类更准确吧