成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java值傳遞的一些理解

waltr / 2944人閱讀

摘要:而且棧內(nèi)存一般使用的是一級,讀寫速度快。堆內(nèi)存主要存放由創(chuàng)建的對象和數(shù)組,垃圾回收器回收這部分內(nèi)容。所以雖然值傳遞復(fù)制的是棧內(nèi)的原值,但表現(xiàn)出來的特性仍然是趨向于引用傳遞因為你復(fù)制一個引用的原值,并沒有卵用。

今天下午一直在看一些常見的Java試題,看到很多問題都涉及到Java參數(shù)傳遞的問題,之前自己也是一知半解,雖然知道是值傳遞,但沒有辦法通俗易懂的講出個所以然來,所以特地查一些資料并且記錄下來今天的理解。
首先,Java的內(nèi)存分配分為三種:棧內(nèi)存、堆內(nèi)存、方法區(qū)內(nèi)存。

1.棧內(nèi)存:主要存放函數(shù)中定義的基本類型變量,對象的引用。在程序運行到跳出變量作用域后Java會自動釋放內(nèi)存。使用棧的好處是在于,棧的先進后出的性質(zhì)符合程序中函數(shù)調(diào)用運行特點,即后調(diào)用先返回,這樣就可以盡快釋放不用到的內(nèi)存空間。而且棧內(nèi)存一般使用的是一級cache,讀寫速度快。
2.堆內(nèi)存:主要存放由new創(chuàng)建的對象和數(shù)組,Java垃圾回收器回收這部分內(nèi)容。使用堆結(jié)構(gòu)的意義,我推測是在于易于控制(垃圾回收的時候總是回收最久沒有使用的空間,而堆可以很快的取出結(jié)構(gòu)中最大或最小的值)。
3.方法區(qū)內(nèi)存:主要存放類信息和static變量。這里穿插一個小知識點:在每次類被加載的時候,總是先執(zhí)行static屬性的定義,以及static語句的執(zhí)行。

好,說完內(nèi)存就可以清晰的解釋Java參數(shù)傳遞了。
1.Java只用值傳遞
2.值傳遞時只復(fù)制了棧內(nèi)存的內(nèi)容
3.對于基本類型對象, 棧內(nèi)存中留有的是原值,所以參數(shù)傳遞時,值傳遞將原值復(fù)制一份到調(diào)用函數(shù)內(nèi)
4.對于復(fù)雜對象(new出來的對象,通過單例模式獲得的對象我認為也算是new出來的對象,或者說是原值在堆內(nèi)存中的對象),棧內(nèi)只存有的是一個指向堆內(nèi)值得引用。所以雖然值傳遞復(fù)制的是棧內(nèi)的“原值”,但表現(xiàn)出來的特性仍然是趨向于引用傳遞(因為你復(fù)制一個引用的原值,并沒有卵用)。

總之,傳參數(shù)時,如果參數(shù)是基本類型,那在調(diào)用之后原值不會被改變;如果參數(shù)是復(fù)雜類型,在調(diào)用后參數(shù)會改變。

參考資料是知乎的一個問題下的眾多答案:
https://www.zhihu.com/questio...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65108.html

相關(guān)文章

  • 引用傳遞傳遞(pass by value vs pass by reference)

    摘要:字節(jié)碼驗證于是就寫了以下的類,用來驗證然后,然后,看字節(jié)碼如下圖。以上,就是整個關(guān)于引用傳遞和值傳遞的理解,有說的不對的,望指正。 寫這個的原因主要是今天看到了知乎的一個問題,發(fā)現(xiàn)自己有些地方有點懵逼,寫下來記錄一下,知乎上排名第一的答案說的很清楚,不過看了以后依舊有點迷迷糊糊,所以自己寫了個幾行代碼測試。首先上一個,感覺比較對的結(jié)論:**Horstmann的《java核心技術(shù)》(中文...

    longmon 評論0 收藏0
  • java中傳方式個人理解

    摘要:接下了,我們調(diào)用方法,來嘗試改變的值以此驗證中的傳值方式。我們將作為實參傳給方法,形參來接受這個實參,在這里就體現(xiàn)出了兩種傳參方式的不同。中只有值傳遞這一種方式,只不過對于引用類型來說,傳遞的參數(shù)是對象的引用罷了。 前言 這幾天在整理java基礎(chǔ)知識方面的內(nèi)容,對于值傳遞還不是特別理解,于是查閱了一些資料和網(wǎng)上相關(guān)博客,自己進行了歸納總結(jié),最后將其整理成了一篇博客。 值傳遞 值傳遞是指...

    vvpvvp 評論0 收藏0
  • Java開發(fā)常見問題集錦

    摘要:下面是一些常見的理解性問題,每一個問題盡量用圖或代碼去描述。內(nèi)容全部來自,包括基本語法數(shù)組集合類泛型面向?qū)ο罄厥债惓?刂戚斎胼敵龊蛢?nèi)存。不斷更新,歡迎大家提出有趣味的問題和意見。 程序員經(jīng)??梢酝ㄟ^搜索或者記憶來完成代碼,但是許多時候并不真正理解為什么那樣寫。也就是說,有一定經(jīng)驗的程序員不會犯一些低級的語法錯誤,但是因為不深入理解有可能造成一些高級錯誤,比如說運行無效率,代碼難De...

    MSchumi 評論0 收藏0
  • 求職準備 - 收藏集 - 掘金

    摘要:一基礎(chǔ)接口的意義百度規(guī)范擴展回調(diào)抽象類的意義想不想通過一線互聯(lián)網(wǎng)公司面試文檔整理為電子書掘金簡介谷歌求職記我花了八個月準備谷歌面試掘金原文鏈接翻譯者 【面試寶典】從對象深入分析 Java 中實例變量和類變量的區(qū)別 - 掘金原創(chuàng)文章,轉(zhuǎn)載請務(wù)必保留原出處為:http://www.54tianzhisheng.cn/... , 歡迎訪問我的站點,閱讀更多有深度的文章。 實例變量 和 類變量...

    cuieney 評論0 收藏0
  • Java基礎(chǔ)知識儲備一:Java傳遞和引用傳遞

    摘要:每個棧幀中包括局部變量表用來存儲方法中的局部變量非靜態(tài)變量函數(shù)形參。操作數(shù)棧虛擬機的解釋執(zhí)行引擎被稱為基于棧的執(zhí)行引擎,其中所指的棧就是指操作數(shù)棧。指向運行時常量池的引用存儲程序執(zhí)行時可能用到常量的引用。 本篇文章轉(zhuǎn)自微信公眾號:Java后端技術(shù) 學(xué)過Java基礎(chǔ)的人都知道:值傳遞和引用傳遞是初次接觸Java時的一個難點,有時候記得了語法卻記不得怎么實際運用,有時候會的了運用卻解釋不出...

    frontoldman 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<