java 裏面的引用傳遞和值傳遞問題

1.先從值引用:
String a ="God";//a存放在stack 中 God存放在head(堆中)創建了兩個對象
String b=a;
a指向堆中的God對象
b=a;說明b也指向了head中的God對象 ;b=a 只創建了一個對象b
此時進行b=“other god” 並不是改變b原有的值,因爲String類final 修飾的類,所以在進行賦值的時候就在隊中新建了一個 other 對象,然後將b指向other god這個對象。

下面我們進行一個數據交換的操作

public void swap(int a,int b){
int temp=a;
a=b;
b=a;
System.out.println(a+"="+b);10 20
}
main(){

int a=20;

b=10;
swap(a,b);
System.out.println(a+"="+b);20 10

}
可以發現main 方法中的a,b值並沒有發生改變 ,所以他是值傳遞

2.引用傳遞
void method(StringBuffer sb){
sb.append("zzz");
}
main(){
StringBuffer sb=new StringBuffer("dd");
method(sb);
System.out.println(sb.toString());

}
可以看出sb 的值變成了ddzzz,一對應可以有很多個引用變量,但都是針對同一對象進行操作

總結:常用的數據類型如(int ,double)是值傳遞,自己定義的對象則是引用傳遞。

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