Java foreach循環(huán)是否可以修改數(shù)據(jù)的值問題解決方法
一、問題引出
最近在做項目的時候,需要修改一個數(shù)組里面各個元素的值,是這樣的:在如圖所示的程序
當(dāng)中,我本想是修改數(shù)組array當(dāng)中各字符串的值(將其變成大寫),采取的是foreach循環(huán),然而我運(yùn)行之后發(fā)現(xiàn)很奇怪:數(shù)組的內(nèi)容并未發(fā)生改變 ,然后我采取了for循環(huán)再次嘗試對數(shù)組元素進(jìn)
行修改:這次可以了!
二、問題解決
于是我上網(wǎng)查閱了相關(guān)的資料,看到一篇大佬發(fā)出的文章,我頓時茅塞頓開:
foreach循環(huán)迭代數(shù)組元素時,不能改變數(shù)組元素的值,因此,不要對foreach的循環(huán)變量進(jìn)行賦值:基本類型數(shù)組,不可改變;但引用類型數(shù)組(除String類型),可以改變。
我頓時醒悟了!下面詳細(xì)介紹:
1.基本類型數(shù)組
foreach不可以改變變量,即使用集合存變量也不可以(foreach循環(huán)中,是把容器中的數(shù)據(jù)交給了那個element,當(dāng)容器中裝的是變量時,foreach是改變不了元數(shù)據(jù)的,想改變只能通過for循環(huán))。如圖可以看到,并沒有什么用,無法改變:
2.引用類型數(shù)組
①String類型
正如開篇所說,String類型是一個特例,無法被修改,只能通過for循環(huán)進(jìn)行修改。
②其它引用類型
foreach可以改變對象的值,對象和變量不一樣,變量是獨(dú)立的,但是如果把一個對象傳給了另一個對象,他們就是一個對象,引用的地址是一樣的,所以改變其中一個就改變了另一個。如圖所示:可以看到foreach可以修改對象的類型。
但foreach不能刪除或添加對象(foreach循環(huán)中,是把容器中的數(shù)據(jù)交給了那個element,當(dāng)容器中裝的是對象時,對象的賦值(賦的是引用,即給的是原對象所在的地址)。為什么不能刪除或者添加變量,因為每次進(jìn)入foreach時,就會調(diào)用java.util.LinkedList.next()方法,該方法會對集合的長度進(jìn)行判斷,所以會出現(xiàn)異常,如圖所示:
到此這篇關(guān)于Java foreach循環(huán)是否可以修改數(shù)據(jù)的值的文章就介紹到這了,更多相關(guān)Java foreach循環(huán)是否修改數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解使用Spring MVC統(tǒng)一異常處理實(shí)戰(zhàn)
本篇文章主要介紹了詳解使用Spring MVC統(tǒng)一異常處理實(shí)戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04SpringBoot中使用MyBatis-Plus實(shí)現(xiàn)分頁接口的詳細(xì)教程
MyBatis-Plus是一個MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,在SpringBoot項目中使用MyBatis-Plus可以大大簡化分頁邏輯的編寫,本文將介紹如何在 SpringBoot項目中使用MyBatis-Plus實(shí)現(xiàn)分頁接口2024-03-03使用mvn?deploy命令上傳jar包的實(shí)現(xiàn)
本文介紹了使用mvndeploy:deploy-file命令將本地倉庫中的JAR包重新發(fā)布到Maven私服,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03java讀取resources文件詳解及實(shí)現(xiàn)代碼
這篇文章主要介紹了java讀取resources文件詳解及實(shí)現(xiàn)代碼的相關(guān)資料,在開發(fā)項目的時候經(jīng)常會遇到讀取文件夾里面的內(nèi)容,需要的朋友可以參考下2017-07-07Spring 應(yīng)用上下文獲取 Bean 的常用姿勢實(shí)例總結(jié)
這篇文章主要介紹了Spring 應(yīng)用上下文獲取 Bean,結(jié)合實(shí)例形式總結(jié)分析了Spring 應(yīng)用上下文獲取 Bean的實(shí)現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-05-05JAVA求兩直線交點(diǎn)和三角形內(nèi)外心的方法
本文提供了JAVA求兩直線交點(diǎn)、三角形外心、三角形內(nèi)心的代碼和算法講解,大家可以參考使用2013-11-11