摘要:閱讀原文這題不會(huì)別說你懂值傳遞與引用傳遞即使工作過一階段的人也不一定能夠理解是值傳遞還是引用傳遞。概念值傳遞方法調(diào)用時(shí),實(shí)參的數(shù)值被復(fù)制到另一個(gè)變量,然后傳遞復(fù)制的副本。
閱讀原文:這題不會(huì)!別說你懂值傳遞與引用傳遞
即使工作過一階段的人也不一定能夠理解Java是值傳遞還是引用傳遞。若不信,那么來看看下面這道題。
題目請(qǐng)先寫出你的答案,然后對(duì)比下輸出結(jié)果。
public class Test { private String str = new String("碼上實(shí)戰(zhàn)"); private char[] chars = {"星", "期", "一"}; private int num = 2019; private void change(String cStr, char[] cChars, int cNum) { cStr = "歡迎關(guān)注->碼上實(shí)戰(zhàn)"; //第一步 cChars[2] = "二"; //第二步 cNum = 2020; //第三步 } public static void main(String[] args) { Test test = new Test(); test.change(test.str, test.chars, test.num); System.out.println("str=" + test.str); System.out.println("chars=" + test.chars[0] + "," + test.chars[1] + "," + test.chars[2]); System.out.println("num=" + test.num); } }
輸出結(jié)果
str=碼上實(shí)戰(zhàn) chars=星,期,二 num=2019值傳遞還是引用傳遞?
首先,明確的告訴大家,Java只有值傳遞,沒有引用傳遞!無論理解不理解,先記住這點(diǎn)。
概念值傳遞
方法調(diào)用時(shí),實(shí)參的數(shù)值被復(fù)制到另一個(gè)變量,然后傳遞復(fù)制的副本。
引用傳遞
方法調(diào)用時(shí),實(shí)際參數(shù)的地址直接傳遞到方法中。
對(duì)比
- | 值傳遞 | 引用傳遞 |
---|---|---|
區(qū)別 | 創(chuàng)建副本 | 不創(chuàng)建副本 |
改變 | 函數(shù)中無法改變實(shí)際參數(shù) | 函數(shù)中可以改變?cè)紝?shí)際參數(shù) |
注意
這下你看清了吧,值傳遞和引用傳遞的真正區(qū)別是:傳遞時(shí),實(shí)際參數(shù)是否復(fù)制了副本! 不要去管參數(shù)是基本類型還是引用類型。
解題為什么char數(shù)組中改變了?
因?yàn)?實(shí)參和形參指向的是同一個(gè)數(shù)組對(duì)象,方法中改變的不是參數(shù)本身,而是改變了它所指向的對(duì)象。
錯(cuò)誤的區(qū)分基本類型和引用類型
由題可知,無論是String還是int,即使在方法中都進(jìn)行改變,但實(shí)參都沒有改變,所以和參數(shù)什么類型沒有關(guān)系。
如果你有什么問題,歡迎留言交流。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73915.html
摘要:閱讀原文小而有料的想聽文章核心內(nèi)容語音對(duì)話版,請(qǐng)到微信公眾號(hào)碼上實(shí)戰(zhàn),閱讀原文這塊肉雖然小,但不可不知,因?yàn)椴粌H面試可能會(huì)問,實(shí)際中也常使用。參考書籍編程思想深入理解虛擬機(jī)更多精彩技術(shù)文章盡在微信公眾號(hào)碼上實(shí)戰(zhàn) 閱讀原文:小而有料的final(想聽文章核心內(nèi)容語音對(duì)話版,請(qǐng)到微信公眾號(hào)——碼上實(shí)戰(zhàn),閱讀原文) final這塊肉雖然小,但不可不知,因?yàn)椴粌H面試可能會(huì)問,實(shí)際中也常使用。就...
摘要:知道存在是很有用的,這樣當(dāng)你在別人的代碼中遇到它時(shí),你就知道它是什么了。如上面所示的示例所示,元素選擇器具有很低的特殊性。類選擇器具有更高特殊性,所以將戰(zhàn)勝元素選擇器。個(gè)位在整個(gè)選擇器中每包含一個(gè)元素選擇器或偽元素就在該列中加分。 在實(shí)際的工作中,我們可能還有些疑惑,當(dāng)有多個(gè)選擇器作用在一個(gè)元素上時(shí),哪個(gè)規(guī)則最終會(huì)應(yīng)用到元素上?其實(shí)這是通過層疊機(jī)制來控制的,這也和樣式繼承(元素從其父元...
摘要:前段時(shí)間試譯了的好書,其中的第二章,書中對(duì)的講解和舉例可以說相當(dāng)全面,看完之后發(fā)現(xiàn)自己并不太懂相對(duì)單位,也希望分享給大家,所以有了這個(gè)譯文系列。 showImg(https://segmentfault.com/img/bVbdOMr?w=920&h=450); 前段時(shí)間試譯了Keith J.Grant的CSS好書《CSS in Depth》,其中的第二章《Working with r...
摘要:還有視口相關(guān)單位,依賴瀏覽器的視口大小來定義長度的。如果你不熟悉視口相關(guān)單位的話,在這里簡(jiǎn)單介紹一下。筆記視口相關(guān)單位對(duì)于大多數(shù)瀏覽器還是一項(xiàng)比較新的特性,所以當(dāng)你試圖把這個(gè)特性和其他樣式混搭時(shí),有可能會(huì)有一些很奇怪的。 前段時(shí)間試譯了Keith J.Grant的CSS好書《CSS in Depth》,其中的第二章《Working with relative units》,書中對(duì)rel...
摘要:無單位數(shù)字和行高有一些屬性可以接收不帶單位的數(shù)值意思就是一個(gè)不帶長度單位的數(shù)字,如和等于,等于,如此類推。警告不帶單位的只可以表示長度單位和百分比的值,譬如和。段落繼承了的行高。長度有兩種類型絕對(duì)的和相對(duì)的。 前段時(shí)間試譯了Keith J.Grant的CSS好書《CSS in Depth》,其中的第二章《Working with relative units》,書中對(duì)relative ...
閱讀 1074·2021-11-24 09:39
閱讀 1307·2021-11-18 13:18
閱讀 2425·2021-11-15 11:38
閱讀 1824·2021-09-26 09:47
閱讀 1625·2021-09-22 15:09
閱讀 1624·2021-09-03 10:29
閱讀 1510·2019-08-29 17:28
閱讀 2951·2019-08-29 16:30