for(foo('a') ; foo('b') && (i<2);foo('c'))的執行結果


 1     static boolean foo(char c) {
 2         System.out.println(c);
 3         return true;
 4     }
 5 
 6     public static void main(String[] args) {
 7         int i = 0;
 8         for (foo('a'); foo('b') && (i < 2); foo('c')) { 
 9             i++;
10             foo('d');
11         }
12     }

代碼執行結果:a b d c b d c b

做這道面試題之前我們要了解for語句
  1.各部分執行的順序
  2.各部分執行的次數
  3.循環的終止條件

分號之前第一部分是初始化語句也就是foo('a')所以只會執行一次,第二部分是循環終止控制,也就是循環條件當foo('b') && (i<2)為false時條件就會終止,所以循環會執行兩次

第三部分在每次循環完畢時執行,所以執行順序是先foo('a')所以先打印a,再次執行foo('b')並且判斷條件i<2 條件是否滿足,滿足的話進入循環體,然后i++ i等於1,然后執行foo('d')

再打印d ,執行完畢再執行foo('c')打印c,這是循環一次的結果 abdc,第二遍循環,因為a是初始化變量所以只執行一次,直接執行循環條件,先執行foo('b')並且判斷i<2條件是

否滿足,現在i是1所以條件滿足進入循環體,執行i++,再次執行foo('d'),循環完畢執行('c')然后打印c,循環第二遍的結果是bdc,這時循環還會繼續執行,因為它還不知道

i是否小於2,初始化變量不執行,執行循環條件,先執行foo('b')打印b然后判斷循環條件,現在i等於2所以i<2的條件不滿足,所以循環結束

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM