欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年06月25日 14:52:19   投稿:lqh  
這篇文章主要介紹了詳解java的值傳遞、地址傳遞、引用傳遞的相關(guān)資料,需要的朋友可以參考下

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

一直來(lái)覺(jué)得對(duì)值傳遞和地址傳遞了解的很清楚,剛才在開(kāi)源中國(guó)上看到一篇帖子介紹了java中的值傳遞和地址傳遞,看完后感受頗深。下邊總結(jié)下以便更容易理解。

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

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"; 
  }  
   
}

大家思考下,這個(gè)例子輸出的結(jié)果應(yīng)該是123呢還是234呢?結(jié)果是123。why?一句話表達(dá):對(duì)象也是值傳遞,只是把這個(gè)對(duì)象的引用copy了一份。

其實(shí)java本來(lái)就是值傳遞,沒(méi)有c++那樣的指針傳遞,分步分析下上邊的代碼:

1、name = "123"

2、調(diào)用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"); 
  }  
   
}

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

1、name = "123"

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

3、改變所指向?qū)ο蟮闹?123"+"234"

4、引用沒(méi)變只是值變了,所以結(jié)果為123234

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

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

相關(guān)文章

  • Java并發(fā)計(jì)數(shù)器的深入理解

    Java并發(fā)計(jì)數(shù)器的深入理解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)計(jì)數(shù)器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼

    Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼

    本篇文章主要介紹了Java使用NIO包實(shí)現(xiàn)Socket通信的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解

    SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解

    這篇文章主要介紹了SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解,需要的朋友可以參考下
    2017-09-09
  • 詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目

    詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目

    這篇文章主要介紹了詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • MyBatis-Plus如何使用枚舉自動(dòng)關(guān)聯(lián)注入詳解

    MyBatis-Plus如何使用枚舉自動(dòng)關(guān)聯(lián)注入詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何使用枚舉自動(dòng)關(guān)聯(lián)注入的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MyBatis-Plus具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 詳解Java并發(fā)編程中的優(yōu)先級(jí)隊(duì)列PriorityBlockingQueue

    詳解Java并發(fā)編程中的優(yōu)先級(jí)隊(duì)列PriorityBlockingQueue

    PriorityBlockingQueue是Java中實(shí)現(xiàn)了堆數(shù)據(jù)結(jié)構(gòu)的線程安全的有界阻塞隊(duì)列。本文將會(huì)深入解讀PriorityBlockingQueue的源碼實(shí)現(xiàn),感興趣的可以了解一下
    2023-05-05
  • 為什么JDK8中HashMap依然會(huì)死循環(huán)

    為什么JDK8中HashMap依然會(huì)死循環(huán)

    這篇文章主要介紹了為什么JDK8中HashMap依然會(huì)死循環(huán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring MVC框架配置方法詳解

    Spring MVC框架配置方法詳解

    這篇文章主要為大家詳細(xì)介紹了Spring MVC框架的配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • SpringBoot使用LomBok的示例代碼

    SpringBoot使用LomBok的示例代碼

    這篇文章主要介紹了SpringBoot使用LomBok的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲示例代碼

    Java實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲示例代碼

    這篇文章主要為大家介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java游戲開(kāi)發(fā)有一定幫助,需要的可以參考一下
    2022-05-05

最新評(píng)論