国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java值傳遞的一些理解

waltr / 2936人閱讀

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

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

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

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

總之,傳參數時,如果參數是基本類型,那在調用之后原值不會被改變;如果參數是復雜類型,在調用后參數會改變。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65108.html

相關文章

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

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

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

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

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

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

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

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

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

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

    frontoldman 評論0 收藏0

發表評論

0條評論

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