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ì)原來(lái)的數(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異常java.lang.UnsatisfiedLinkError: no opencv_ja
這篇文章主要介紹了Java異常java.lang.UnsatisfiedLinkError: no opencv_java320 in java.library.path的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringCloud GateWay動(dòng)態(tài)路由用法
網(wǎng)關(guān)作為所有項(xiàng)目的入口,不希望重啟,因此動(dòng)態(tài)路由是必須的,動(dòng)態(tài)路由主要通過(guò)RouteDefinitionRepository接口實(shí)現(xiàn),其默認(rèn)的實(shí)現(xiàn)是InMemoryRouteDefinitionRepository,即在內(nèi)存中存儲(chǔ)路由配置,可基于這個(gè)map對(duì)象操作,動(dòng)態(tài)路由的實(shí)現(xiàn)方案有兩種2024-10-10
java算法題解Leetcode763劃分字母區(qū)間示例
這篇文章主要為大家介紹了java算法題解Leetcode763劃分字母區(qū)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
idea 2023.1字體設(shè)置及自動(dòng)調(diào)整大小的圖文教程
這篇文章主要介紹了idea 2023.1字體設(shè)置及自動(dòng)調(diào)整大小的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
簡(jiǎn)單了解Java編程中線程的創(chuàng)建與守護(hù)線程
這篇文章主要介紹了Java編程中線程的創(chuàng)建與守護(hù)線程,是Java多線程并發(fā)編程的基礎(chǔ),需要的朋友可以參考下2015-11-11
java把excel內(nèi)容上傳到mysql實(shí)例代碼
這篇文章主要介紹了java把excel內(nèi)容上傳到mysql實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

