亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java值傳遞的一些理解

waltr / 3020人閱讀

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/65108.html

相關(guān)文章

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

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

    longmon 評(píng)論0 收藏0
  • java中傳方式個(gè)人理解

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

    vvpvvp 評(píng)論0 收藏0
  • Java開(kāi)發(fā)常見(jiàn)問(wèn)題集錦

    摘要:下面是一些常見(jiàn)的理解性問(wèn)題,每一個(gè)問(wèn)題盡量用圖或代碼去描述。內(nèi)容全部來(lái)自,包括基本語(yǔ)法數(shù)組集合類泛型面向?qū)ο罄厥债惓?刂戚斎胼敵龊蛢?nèi)存。不斷更新,歡迎大家提出有趣味的問(wèn)題和意見(jiàn)。 程序員經(jīng)常可以通過(guò)搜索或者記憶來(lái)完成代碼,但是許多時(shí)候并不真正理解為什么那樣寫。也就是說(shuō),有一定經(jīng)驗(yàn)的程序員不會(huì)犯一些低級(jí)的語(yǔ)法錯(cuò)誤,但是因?yàn)椴簧钊肜斫庥锌赡茉斐梢恍└呒?jí)錯(cuò)誤,比如說(shuō)運(yùn)行無(wú)效率,代碼難De...

    MSchumi 評(píng)論0 收藏0
  • 求職準(zhǔn)備 - 收藏集 - 掘金

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

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

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

    frontoldman 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<