亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java foreach循環(huán)是否可以修改數(shù)據(jù)的值問題解決方法

 更新時(shí)間:2024年02月07日 10:46:47   作者:BugMaker2002  
最近在做項(xiàng)目的時(shí)候,需要修改一個(gè)數(shù)組里面各個(gè)元素的值,foreach循環(huán)迭代數(shù)組元素時(shí),不能改變數(shù)組元素的值,這篇文章給大家介紹Java foreach循環(huán)是否可以修改數(shù)據(jù)的值的問題及解決方法,感興趣的朋友一起看看吧

一、問題引出

        最近在做項(xiàng)目的時(shí)候,需要修改一個(gè)數(shù)組里面各個(gè)元素的值,是這樣的:在如圖所示的程序

 當(dāng)中,我本想是修改數(shù)組array當(dāng)中各字符串的值(將其變成大寫),采取的是foreach循環(huán),然而我運(yùn)行之后發(fā)現(xiàn)很奇怪:數(shù)組的內(nèi)容并未發(fā)生改變 ,然后我采取了for循環(huán)再次嘗試對(duì)數(shù)組元素進(jìn)

 行修改:這次可以了!

 二、問題解決

        于是我上網(wǎng)查閱了相關(guān)的資料,看到一篇大佬發(fā)出的文章,我頓時(shí)茅塞頓開:

foreach循環(huán)迭代數(shù)組元素時(shí),不能改變數(shù)組元素的值,因此,不要對(duì)foreach的循環(huán)變量進(jìn)行賦值:基本類型數(shù)組,不可改變;但引用類型數(shù)組(除String類型),可以改變。

我頓時(shí)醒悟了!下面詳細(xì)介紹:

1.基本類型數(shù)組

        foreach不可以改變變量,即使用集合存變量也不可以(foreach循環(huán)中,是把容器中的數(shù)據(jù)交給了那個(gè)element,當(dāng)容器中裝的是變量時(shí),foreach是改變不了元數(shù)據(jù)的,想改變只能通過for循環(huán))。如圖可以看到,并沒有什么用,無法改變:

2.引用類型數(shù)組

        ①String類型

        正如開篇所說,String類型是一個(gè)特例,無法被修改,只能通過for循環(huán)進(jìn)行修改。

        ②其它引用類型

        foreach可以改變對(duì)象的值,對(duì)象和變量不一樣,變量是獨(dú)立的,但是如果把一個(gè)對(duì)象傳給了另一個(gè)對(duì)象,他們就是一個(gè)對(duì)象,引用的地址是一樣的,所以改變其中一個(gè)就改變了另一個(gè)。如圖所示:可以看到foreach可以修改對(duì)象的類型。

        但foreach不能刪除或添加對(duì)象(foreach循環(huán)中,是把容器中的數(shù)據(jù)交給了那個(gè)element,當(dāng)容器中裝的是對(duì)象時(shí),對(duì)象的賦值(賦的是引用,即給的是原對(duì)象所在的地址)。為什么不能刪除或者添加變量,因?yàn)槊看芜M(jìn)入foreach時(shí),就會(huì)調(diào)用java.util.LinkedList.next()方法,該方法會(huì)對(duì)集合的長(zhǎng)度進(jìn)行判斷,所以會(huì)出現(xiàn)異常,如圖所示:

到此這篇關(guān)于Java foreach循環(huán)是否可以修改數(shù)據(jù)的值的文章就介紹到這了,更多相關(guān)Java foreach循環(huán)是否修改數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論