java foreach迴圈為什麼不能賦值

來源:互聯網
上載者:User

標籤:foreach   java   

直接上代碼

public class test4 {    public static void main(String args[]){        int [] a=new int[3];        for(int j:a){            j=55;        }    }}

代碼很簡單,下面是java編譯後的位元組碼:

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        //建立一個指定原始類型的數組,並將其引用值壓入棧頂       3: astore_1          //將棧頂引用型數值存入第二個本地變數       4: aload_1           //將第二個參考型別本地變數推送至棧頂       5: dup               //複製棧頂數值並將複製值壓入棧頂       6: astore        5       //將棧頂引用型數值存入指定本地變數,此處將數組引用放在第六個本地變數裡       8: arraylength           //獲得數組的長度值並壓入棧頂       9: istore        4       //將棧頂int型數值存入指定本地變數。      11: iconst_0          //將int型0推送至棧頂      12: istore_3          //將棧頂int型數值存入第四個本地變數      13: goto          27      //跳轉到27      16: aload         5       //將指定的參考型別本地變數推送至棧頂      18: iload_3           //將第四個int型本地變數推送值棧頂      19: iaload            //將int型數組指定索引的值推送至棧頂          20: istore_2          //將棧頂int型數值存入第三個本地變數      21: bipush        55      //將單位元組的常量值(-127~128)推送至棧頂      23: istore_2          //將棧頂int型數值存入第三個本地變數      24: iinc          3, 1        //將指定int型變數增加指定值      27: iload_3           //將第四個int型本地變數推送至棧頂      28: iload         4       //將指定的int型本地變數推送至棧頂      30: if_icmplt     16      //比較棧頂兩int型數值的大小,當結果小小於0時跳轉      33: return            //從當前方法返回void}

我們只需要關注6,16~23行就可以,可以發現這幾句代碼是將數組引用副本中的值取出放在棧頂,然後從棧頂取出變數放在本地變數3中,然後把55放在棧頂,再把55取出放在本地變數3中,從始至終的操作都是在本地局部變數中的,並沒有對原來的數值產生任何影響。

java foreach迴圈為什麼不能賦值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.