卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

java 值傳遞 引用傳遞 為什么說(shuō)java里面只有值傳遞?

為什么說(shuō)java里面只有值傳遞?在這個(gè)問(wèn)題上,不同的人有不同的理解。對(duì)于Java初學(xué)者來(lái)說(shuō),他們可能認(rèn)為Java中的參數(shù)傳遞分為值傳遞和引用傳遞。至于為什么,教科書(shū)上說(shuō)了。對(duì)于程序員的某些工作年限,他

為什么說(shuō)java里面只有值傳遞?

在這個(gè)問(wèn)題上,不同的人有不同的理解。對(duì)于Java初學(xué)者來(lái)說(shuō),他們可能認(rèn)為Java中的參數(shù)傳遞分為值傳遞和引用傳遞。至于為什么,教科書(shū)上說(shuō)了。對(duì)于程序員的某些工作年限,他們可能會(huì)認(rèn)為,如果傳遞的參數(shù)類(lèi)型是普通類(lèi)型,則傳遞的是值;如果參數(shù)是對(duì)象,則傳遞的是引用。另一些人認(rèn)為,只有Java中的值傳遞才是主要問(wèn)題的主題。

對(duì)于Java編程語(yǔ)言,前兩種理解是錯(cuò)誤的。Java中只使用值傳遞。對(duì)我來(lái)說(shuō),一開(kāi)始,我也理解了價(jià)值傳遞和參照傳遞的理論,但隨著自己代碼的積累,我逐漸發(fā)現(xiàn)事實(shí)并非如此。那么為什么只有價(jià)值傳遞呢?

首先,讓我們了解什么是值傳遞,什么是引用傳遞?

值傳輸意味著調(diào)用函數(shù)時(shí),實(shí)際參數(shù)值被復(fù)制并傳遞給被調(diào)用函數(shù)。修改被調(diào)用函數(shù)中的參數(shù)值不會(huì)影響原始參數(shù)值。

引用傳遞意味著調(diào)用函數(shù)時(shí),實(shí)際參數(shù)的地址直接傳遞給被調(diào)用函數(shù)。修改被調(diào)用函數(shù)中的參數(shù)值將影響原始參數(shù)值。

如果傳遞的參數(shù)類(lèi)型是普通基本類(lèi)型,則必須復(fù)制實(shí)際參數(shù)值并將其傳遞給形式參數(shù)。但是,當(dāng)參數(shù)類(lèi)型是對(duì)象時(shí),它也是復(fù)制的參數(shù)值,并將其傳遞給形式參數(shù)。只復(fù)制對(duì)象的引用地址,即內(nèi)存中分配的存儲(chǔ)地址,而不是直接傳遞的引用地址。

此時(shí),有些人可能會(huì)問(wèn)為什么一個(gè)對(duì)象會(huì)被傳遞給另一個(gè)方法。在此方法中修改對(duì)象的屬性值時(shí),原始調(diào)用方法中對(duì)象的屬性值將更改。這不就是參考傳遞嗎?

事實(shí)上,這是一個(gè)非常令人困惑的問(wèn)題。如果你仔細(xì)看看上面的說(shuō)法,事實(shí)并非如此。將一個(gè)對(duì)象傳遞給另一個(gè)方法會(huì)傳遞什么?傳遞對(duì)象引用的地址。對(duì)象引用的地址是否已在其他方法中修改?原始對(duì)象引用是否受影響?不

!因此,Java中沒(méi)有引用傳遞,只有值傳遞。不要犯任何錯(cuò)誤

java值傳遞和引用傳遞有什么區(qū)別?

兩者的區(qū)別在于Java值傳輸需要為傳輸?shù)闹捣峙漕~外的存儲(chǔ)空間,而引用傳輸則不需要。它只傳輸所傳輸值的地址,變量可以直接將值讀取到地址指示的存儲(chǔ)空間。

從這個(gè)意義上講,引用傳遞比傳遞節(jié)省更多的存儲(chǔ)空間。

為什么Java只有值傳遞,但C# 既有值傳遞,又有引用傳遞,這種語(yǔ)言設(shè)計(jì)有哪些好處?

它有效地避免了變量復(fù)制的開(kāi)銷(xiāo)。例如,如果參數(shù)是一個(gè)復(fù)雜的結(jié)構(gòu),那么使用引用傳遞比直接傳遞要好,并且性能會(huì)有優(yōu)勢(shì)。

至于為什么Java不提供這樣一種引用傳遞機(jī)制,這可能是Java語(yǔ)言設(shè)計(jì)者的一個(gè)思想問(wèn)題,可能是保持它的簡(jiǎn)單和統(tǒng)一。例如,Java中沒(méi)有多重繼承的概念,但多重繼承可以在C中實(shí)現(xiàn),Java中沒(méi)有定義自定義值類(lèi)型的方法。由于Java中的所有自定義類(lèi)型都是引用類(lèi)型,因此這種語(yǔ)法非常有限,不支持它是正常的。

和C#提供了這樣一種機(jī)制,這也是語(yǔ)言設(shè)計(jì)者的想法。它可以根據(jù)如何方便用戶(hù)的初衷進(jìn)行設(shè)計(jì)。C#最初是為了取代C來(lái)開(kāi)發(fā)Win32。在許多MFC被用于WinForm之前。C語(yǔ)言的出現(xiàn)使WinForm的開(kāi)發(fā)變得簡(jiǎn)單快捷。我個(gè)人認(rèn)為C語(yǔ)言設(shè)計(jì)非常先進(jìn)和優(yōu)秀。