java foreach循環(huán)為什么不能賦值的講解
foreach循環(huán)為什么不能賦值
直接上代碼
public class test4 { public static void main(String args[]){ int [] a=new int[3]; for(int j:a){ j=55; } } }
代碼很簡(jiǎn)單
下面是java編譯后的字節(jié)碼
public class test4 { public test4(); Code: 0: aload_0 1: invokespecial #8 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_3 //將int型3推送至棧頂 1: newarray int //創(chuàng)建一個(gè)指定原始類型的數(shù)組,并將其引用值壓入棧頂 3: astore_1 //將棧頂引用型數(shù)值存入第二個(gè)本地變量 4: aload_1 //將第二個(gè)引用類型本地變量推送至棧頂 5: dup //復(fù)制棧頂數(shù)值并將復(fù)制值壓入棧頂 6: astore 5 //將棧頂引用型數(shù)值存入指定本地變量,此處將數(shù)組引用放在第六個(gè)本地變量里 8: arraylength //獲得數(shù)組的長(zhǎng)度值并壓入棧頂 9: istore 4 //將棧頂int型數(shù)值存入指定本地變量。 11: iconst_0 //將int型0推送至棧頂 12: istore_3 //將棧頂int型數(shù)值存入第四個(gè)本地變量 13: goto 27 //跳轉(zhuǎn)到27 16: aload 5 //將指定的引用類型本地變量推送至棧頂 18: iload_3 //將第四個(gè)int型本地變量推送值棧頂 19: iaload //將int型數(shù)組指定索引的值推送至棧頂 20: istore_2 //將棧頂int型數(shù)值存入第三個(gè)本地變量 21: bipush 55 //將單字節(jié)的常量值(-127~128)推送至棧頂 23: istore_2 //將棧頂int型數(shù)值存入第三個(gè)本地變量 24: iinc 3, 1 //將指定int型變量增加指定值 27: iload_3 //將第四個(gè)int型本地變量推送至棧頂 28: iload 4 //將指定的int型本地變量推送至棧頂 30: if_icmplt 16 //比較棧頂兩int型數(shù)值的大小,當(dāng)結(jié)果小小于0時(shí)跳轉(zhuǎn) 33: return //從當(dāng)前方法返回void }
我們只需要關(guān)注6,16~23行就可以,可以發(fā)現(xiàn)這幾句代碼是將數(shù)組引用副本中的值取出放在棧頂,然后從棧頂取出變量放在本地變量3中,然后把55放在棧頂,再把55取出放在本地變量3中,從始至終的操作都是在本地局部變量中的,并沒有對(duì)原來的數(shù)值產(chǎn)生任何影響。
foreach循環(huán)賦值問題
foreach ($list as $key=>$val){ $data=array();//這一個(gè)一定要加上不然循環(huán)后,modify_one,modify_two都會(huì)賦值 if ($val['id']!=1){ $link = explode("801",$val['p_link']); if (isset($link['1'])){ if ($val['times']%2==0){ $data['modify_two']=$ftp->time($link['1']); }else{ $data['modify_one']=$ftp->time($link['1']); } $admin->edit_modify($val['id'],$data); $admin->addTimes($val['id']); } } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中定時(shí)任務(wù)的全方位場(chǎng)景實(shí)現(xiàn)思路分析
在開發(fā)過程中,根據(jù)需求和業(yè)務(wù)的不同經(jīng)常會(huì)有很多場(chǎng)景需要用到不同特性的定時(shí)任務(wù),本文將針對(duì)這些場(chǎng)景,提供不同的一個(gè)實(shí)現(xiàn)思路,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-12-12Lombok同時(shí)使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時(shí)使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-05-05springboot項(xiàng)目如何在linux服務(wù)器上啟動(dòng)、停止腳本
這篇文章主要介紹了springboot項(xiàng)目如何在linux服務(wù)器上啟動(dòng)、停止腳本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Java中正則表達(dá)式split()特殊符號(hào)使用詳解
這篇文章主要介紹了Java中正則表達(dá)式split()特殊符號(hào)使用詳解, 文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07