Java中沒有引用傳遞!!只有“值傳遞”,但這個值傳遞又不是絕對的值傳遞!
例如基本對象:基本對象是值傳遞。
public class Test {
public static void main(String[] args) {
User user=new User("力量");
swap(user);
System.out.println(user.getUserName());
int i=2;
change(i);
System.out.println(i);
}
public static void swap(User user){
//user=new User("看看");
user.setUserName("看看");
}
public static void change(int i){
i=10;
}
}
class User{
String userName;
public User(String userName) {
this.userName=userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
}
如果調用change()對原值沒有影響。
而swap()則不同,如果使用new是不會改變原值的。
user.setUserName("看看");則會改變原值。
由此可見,Java非基本對象中傳遞的是引用,但不是原引用,而是對原引用的複製,指向的是同一個對象。new的時候不會影響原值,而使用set方法則可以。