溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解java的值傳遞、地址傳遞、引用傳遞

發布時間:2020-09-15 15:24:43 來源:腳本之家 閱讀:159 作者:lqh 欄目:編程語言

詳解java的值傳遞、地址傳遞、引用傳遞

一直來覺得對值傳遞和地址傳遞了解的很清楚,剛才在開源中國上看到一篇帖子介紹了java中的值傳遞和地址傳遞,看完后感受頗深。下邊總結下以便更容易理解。

按照以前的理解,java中基本數據類型是值傳遞,對象是地址(引用)傳遞。給大家看個例子:

public class ObjectTrans { 
   
  public static void main(String[] args) { 
    String name = "123"; 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (String str) {   
    str = "234"; 
  }  
   
}

大家思考下,這個例子輸出的結果應該是123呢還是234呢?結果是123。why?一句話表達:對象也是值傳遞,只是把這個對象的引用copy了一份。

其實java本來就是值傳遞,沒有c++那樣的指針傳遞,分步分析下上邊的代碼:

1、name = "123"

2、調用SChange  str 和 name 共同指向 “123”(拷貝name的引用賦給str)

3、str 重新賦值并指向“234”

4、name指向不變還是“123”

下邊看另外一段代碼:

public class ObjectTrans { 
   
  public static void main(String[] args) { 
    StringBuilder name = new StringBuilder("123"); 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (StringBuilder str) {   
    //str = "234"; 
    str.append("234"); 
  }  
   
}

那么這段代碼輸出的結果應該是什么呢?答案是123234,why?同樣分步分析:

1、name = "123"

2、調用SChange  str 和 name 共同指向 “123”(拷貝name的引用賦給str)

3、改變所指向對象的值"123"+"234"

4、引用沒變只是值變了,所以結果為123234

如果不明白請留言,自己好好分析下。。。請記住一句話:java只有值傳遞。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女