java foreach循環(huán)為什么不能賦值的講解
更新時間:2021年09月27日 08:43:59 作者:魅離兒
這篇文章主要介紹了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; } } }
代碼很簡單
下面是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)建一個指定原始類型的數(shù)組,并將其引用值壓入棧頂 3: astore_1 //將棧頂引用型數(shù)值存入第二個本地變量 4: aload_1 //將第二個引用類型本地變量推送至棧頂 5: dup //復(fù)制棧頂數(shù)值并將復(fù)制值壓入棧頂 6: astore 5 //將棧頂引用型數(shù)值存入指定本地變量,此處將數(shù)組引用放在第六個本地變量里 8: arraylength //獲得數(shù)組的長度值并壓入棧頂 9: istore 4 //將棧頂int型數(shù)值存入指定本地變量。 11: iconst_0 //將int型0推送至棧頂 12: istore_3 //將棧頂int型數(shù)值存入第四個本地變量 13: goto 27 //跳轉(zhuǎn)到27 16: aload 5 //將指定的引用類型本地變量推送至棧頂 18: iload_3 //將第四個int型本地變量推送值棧頂 19: iaload //將int型數(shù)組指定索引的值推送至棧頂 20: istore_2 //將棧頂int型數(shù)值存入第三個本地變量 21: bipush 55 //將單字節(jié)的常量值(-127~128)推送至棧頂 23: istore_2 //將棧頂int型數(shù)值存入第三個本地變量 24: iinc 3, 1 //將指定int型變量增加指定值 27: iload_3 //將第四個int型本地變量推送至棧頂 28: iload 4 //將指定的int型本地變量推送至棧頂 30: if_icmplt 16 //比較棧頂兩int型數(shù)值的大小,當結(jié)果小小于0時跳轉(zhuǎn) 33: return //從當前方法返回void }
我們只需要關(guān)注6,16~23行就可以,可以發(fā)現(xiàn)這幾句代碼是將數(shù)組引用副本中的值取出放在棧頂,然后從棧頂取出變量放在本地變量3中,然后把55放在棧頂,再把55取出放在本地變量3中,從始至終的操作都是在本地局部變量中的,并沒有對原來的數(shù)值產(chǎn)生任何影響。
foreach循環(huán)賦值問題
foreach ($list as $key=>$val){ $data=array();//這一個一定要加上不然循環(huán)后,modify_one,modify_two都會賦值 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']); } } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中定時任務(wù)的全方位場景實現(xiàn)思路分析
在開發(fā)過程中,根據(jù)需求和業(yè)務(wù)的不同經(jīng)常會有很多場景需要用到不同特性的定時任務(wù),本文將針對這些場景,提供不同的一個實現(xiàn)思路,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-12-12Lombok同時使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05springboot項目如何在linux服務(wù)器上啟動、停止腳本
這篇文章主要介紹了springboot項目如何在linux服務(wù)器上啟動、停止腳本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05