通常,函數(shù)存儲在ROM中。當(dāng)函數(shù)被調(diào)用(運(yùn)行)時(shí),它將被傳輸?shù)絩am中運(yùn)行。當(dāng)調(diào)用任何函數(shù)時(shí),都是為了實(shí)現(xiàn)一定的操作函數(shù)。一般函數(shù)在運(yùn)算后需要有運(yùn)算數(shù)據(jù)(即實(shí)際參數(shù)的數(shù)據(jù))和運(yùn)算結(jié)果(即返回值)。函數(shù)運(yùn)行時(shí),為什么不直接操作參數(shù),而是把參數(shù)的數(shù)據(jù)傳給參數(shù),然后再操作參數(shù)呢?
按需開發(fā)可以根據(jù)自己的需求進(jìn)行定制,做網(wǎng)站、成都做網(wǎng)站構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司做網(wǎng)站、成都做網(wǎng)站的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義這是為了“低耦合”。編程思想中有句俗語“低耦合,高內(nèi)聚”。也就是說,職能之間的關(guān)系應(yīng)該盡可能簡單明了,沒有歧義。這是為了提高程序的可讀性和可維護(hù)性。在函數(shù)運(yùn)行時(shí),它應(yīng)用于一個(gè)RAM區(qū)域,其中還包括形式參數(shù)的空間,并將實(shí)際參數(shù)的數(shù)據(jù)提供給形式參數(shù)。
函數(shù)只操作形式參數(shù),不操作實(shí)際參數(shù)。這樣,函數(shù)和實(shí)際參數(shù)之間的關(guān)系就被清除了。當(dāng)函數(shù)死亡(從RAM中釋放)時(shí),實(shí)際參數(shù)之間的關(guān)系就不再需要了。調(diào)用函數(shù)時(shí)應(yīng)用的ram可以直接清除,簡單高效。同時(shí),返回值與此類似。
形式參數(shù)是函數(shù)的入口,返回值是函數(shù)的出口。該函數(shù)只使用自己的內(nèi)部空間運(yùn)行,與其他數(shù)據(jù)無關(guān),大大提高了“低耦合”。這就是形式參數(shù)和實(shí)際參數(shù)的含義。
什么是形參和實(shí)參?參數(shù)傳遞的方式有哪些?通過比較數(shù)學(xué)中的函數(shù),例如,f(x)=2x10F(x)是返回值,x是形式參數(shù),當(dāng)您將值5賦給x時(shí),實(shí)際參數(shù)是5,當(dāng)您將值賦給10時(shí),實(shí)際參數(shù)是10。因此,一般來說,實(shí)際參數(shù)是調(diào)用函數(shù)時(shí)對形式參數(shù)的賦值,實(shí)質(zhì)上參數(shù)傳遞的方式只有一種,即值傳遞。地址轉(zhuǎn)移和引用轉(zhuǎn)移都是價(jià)值轉(zhuǎn)移的概念轉(zhuǎn)換。例如,當(dāng)調(diào)用voidCalc(int*PTR)時(shí),它看起來是地址傳輸,但對于PTR,它的值被初始化為實(shí)際參數(shù),因此它是值傳輸。理解它最基本的方法是,從記憶的角度看,給變量賦值無非是在某個(gè)地方的內(nèi)存中寫一個(gè)值,所以需要注意目標(biāo)內(nèi)存是否發(fā)生了變化。例如,當(dāng)您將一個(gè)值寫入指針參數(shù)所指向的內(nèi)存時(shí),您將寫入一個(gè)實(shí)際參數(shù)所指向的內(nèi)存,這就是地址傳輸?shù)谋举|(zhì)。
為什么說java里面只有值傳遞?在這個(gè)問題上,不同的人有不同的理解。對于Java初學(xué)者來說,他們可能認(rèn)為Java中的參數(shù)傳遞分為值傳遞和引用傳遞。至于為什么,教科書上說了。對于程序員的某些工作年限,他們可能會認(rèn)為,如果傳遞的參數(shù)類型是普通類型,則傳遞的是值;如果參數(shù)是對象,則傳遞的是引用。另一些人認(rèn)為,只有Java中的值傳遞才是主要問題的主題。
對于Java編程語言,前兩種理解是錯(cuò)誤的。Java中只使用值傳遞。對我來說,一開始,我也理解了價(jià)值傳遞和參照傳遞的理論,但隨著自己代碼的積累,我逐漸發(fā)現(xiàn)事實(shí)并非如此。那么為什么只有價(jià)值傳遞呢?
首先,讓我們了解什么是值傳遞,什么是引用傳遞?
值傳輸意味著調(diào)用函數(shù)時(shí),實(shí)際參數(shù)值被復(fù)制并傳遞給被調(diào)用函數(shù)。修改被調(diào)用函數(shù)中的參數(shù)值不會影響原始參數(shù)值。
引用傳遞意味著調(diào)用函數(shù)時(shí),實(shí)際參數(shù)的地址直接傳遞給被調(diào)用函數(shù)。修改被調(diào)用函數(shù)中的參數(shù)值將影響原始參數(shù)值。
如果傳遞的參數(shù)類型是普通基本類型,則必須復(fù)制實(shí)際參數(shù)值并將其傳遞給形式參數(shù)。但是,當(dāng)參數(shù)類型是對象時(shí),它也是復(fù)制的參數(shù)值,并將其傳遞給形式參數(shù)。只復(fù)制對象的引用地址,即內(nèi)存中分配的存儲地址,而不是直接傳遞的引用地址。
此時(shí),有些人可能會問為什么一個(gè)對象會被傳遞給另一個(gè)方法。在此方法中修改對象的屬性值時(shí),原始調(diào)用方法中對象的屬性值將更改。這不就是參考傳遞嗎?
事實(shí)上,這是一個(gè)非常令人困惑的問題。如果你仔細(xì)看看上面的說法,事實(shí)并非如此。將一個(gè)對象傳遞給另一個(gè)方法會傳遞什么?傳遞對象引用的地址。對象引用的地址是否已在其他方法中修改?原始對象引用是否受影響?不
!因此,Java中沒有引用傳遞,只有值傳遞。不要犯任何錯(cuò)誤!
當(dāng)前文章:過程參數(shù)的定義值傳遞形參不影響實(shí)參,那值傳遞的作用是啥?-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article0/ishoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、軟件開發(fā)、手機(jī)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容