關於String是值傳遞還是引用傳遞?

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方法則可以。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章