歡迎您光臨本站 註冊首頁

Java參數傳遞機制分析:值與引用

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Java參數傳遞機制

Java究竟是應該按照什麼來傳遞參數?值?引用?還是兩者皆有?

其實,弄清楚這個問題得從概念入手.什麼是按值傳遞,什麼是按照參數傳遞.

定義一個變數TestObject obj = new TestObject(); 然後把 obj 作為參數傳遞給一個方法.如果在這個方法中,只能改變obj指向的這個對象的內容,那就是「值傳遞」,傳過去的值就是指向這個對象的指針.如果在這個方法中通過操作,是的返回后的obj指向另外一個對象(通過equal判斷返回來的對象是否與原對象在內存中指向同一內存地址),那就是「引用傳遞」,傳過去的是對這個指針變數的「引用」.

Java參數傳遞機制分析代碼

public class PersonT {

public void change(Person p) {
p.name = "mary";
p.age = 20;
}

public void changeInt(int i) {
i = 8;
}
public void change1(Person p){
//新建對象,name為tpm,age為22
p = new Person("tom",22);
}
public static void main(String[] args) {
PersonT t = new PersonT();
Person p = new Person("john", 18);
Person p1 = p;
System.out.println(p);
//通過方法改變對象屬性值
t.change(p1);
System.out.println(p1);
System.out.println("傳回來的值指向是否一致:" p.equals(p1));
//通過方法改變整數值
int i = 10;
System.out.println("i值為:" i);
t.changeInt(i);
System.out.println("i值為:" i);
//新建一對象,改變對象值
t.change1(p);
System.out.println(p);
}
}

輸出結果為:

姓名:john年齡:18

姓名:mary年齡:20

傳回來的值指向是否一致:true

i值為:10

i值為:10

姓名:mary

年齡:20

以上就是對Java參數傳遞機制的一些分析.


[火星人 ] Java參數傳遞機制分析:值與引用已經有461次圍觀

http://coctec.com/docs/java/show-post-61084.html