国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java編程 為什么說java里面只有值傳遞?

為什么說java里面只有值傳遞?關(guān)于這個(gè)問題,不同人對它的理解不盡相同。對初學(xué)Java的同學(xué)來說,可能簡單的認(rèn)為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因?yàn)檎n本上就是這么說的。對于有些

為什么說java里面只有值傳遞?

關(guān)于這個(gè)問題,不同人對它的理解不盡相同。對初學(xué)Java的同學(xué)來說,可能簡單的認(rèn)為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因?yàn)檎n本上就是這么說的。對于有些工作年限的程序員來說,可能認(rèn)為如果傳遞的參數(shù)類型是普通類型,那么就是值傳遞,如果參數(shù)是對象,那么就是引用傳遞。還有一些人認(rèn)為Java中只有值傳遞,就是題主問題中的主題。

對Java編程語言來說,前兩種理解是錯(cuò)誤的,Java中只有值傳遞。對于我來說,剛開始也是理解有值傳遞和引用傳遞一說的,但是隨著自己寫代碼的積累,慢慢發(fā)現(xiàn)并不是那么回事。那為什么只有值傳遞呢?

首先,來了解一下什么是值傳遞,什么是引用傳遞?

值傳遞是說在調(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ù)值會(huì)影響原實(shí)參值。

如果傳遞的參數(shù)類型是普通基本類型,那么一定是復(fù)制一份實(shí)參值傳遞給形參的,但是當(dāng)參數(shù)類型是對象的時(shí)候,也是復(fù)制的一份參數(shù)值傳遞給形參,只不過復(fù)制的是對象引用的地址,也就是在內(nèi)存中分配的存儲(chǔ)地址,不是直接傳遞的引用地址。

此時(shí),可能有人會(huì)說那為什么將一個(gè)對象傳到另一個(gè)方法中,在這個(gè)方法中修改了這個(gè)對象的屬性值時(shí),原調(diào)用方法中的對象屬性值也跟著變了,它不就是引用傳遞嗎?

其實(shí),這是一個(gè)很容易迷惑的點(diǎn)。你仔細(xì)看看上面的陳述就會(huì)發(fā)現(xiàn),不是這么回事。將一個(gè)對象傳到另一個(gè)方法中,傳遞的是什么?傳遞的是對象引用的地址,這個(gè)對象引用的地址在另一個(gè)方法中被修改了嗎?原對象引用有受影響嗎?并沒有吧!

所以,Java中并沒有引用傳遞,只有值傳遞,不要再搞錯(cuò)了!

我是『Java實(shí)戰(zhàn)技術(shù)』,關(guān)注我獲取更多原理分析、實(shí)戰(zhàn)技術(shù)!

Java中string的用法?

string a="abc"

這時(shí)候這個(gè)string類型的變量已經(jīng)被分配了內(nèi)存地址【也就是堆】然后再次給同一個(gè)變量重新賦值,這個(gè)引用類型的變量的內(nèi)存地址指向的是同一個(gè)內(nèi)存地址,所以當(dāng)重新賦值時(shí),內(nèi)存中的值也改變了。如:string a="bcd"此時(shí)內(nèi)存中的值已經(jīng)變成了bcd