java中基本型别和String是按值传递的,类则是传递引用。
定义下面的一个类
public class User {
public String name;
public int userId;
}
实例化
User user = new User();
这里user就是引用,对user进行任何赋值操作都只不会影响User对象。
public static void changeUser(User user){
user = new User();
user.name = "john";
}
在这个函数中对入参进行了重新赋值,在函数执行完毕后函数调用处的user对象没有任何改变。
因为对于普通对象来说,java传递的引用,因此函数入参user只是一份引用副本,让它指向另一个对象,并不会影响到原来的那个对象。