java中的一些學習筆記:
先看一段代碼:
在java中輸入這樣一段代碼
int m = 0; for(int i = 0 ; i < 100 ; i++){ m = m ++; } System.out.println(m);
是不是很多人認為結果是100!很遺憾,結果為0。
在去C 中看看試試:
int main(){int m = 0; for(int i = 0 ; i < 100 ; i++){ m = m ++; }cout<<c; }
很上面一樣嗎?很遺憾,結果是100.
看來java和C 是不一樣的。
在來看下下面的一些例子:
public static void method1(){int x = 5;System.out.print("x+++1+x++ : ");System.out.println(x++ +1 + x++);//5+1+6}public static void method2(){/***這裡的method2和method3的執行順序是不一樣的。*/int x = 5;System.out.print("(x++)+x : ");System.out.println((x++)+x);//5+6}public static void method3(){int x = 5;System.out.print("x+(++x) : ");System.out.println(x+(++x));//5+6}public static void method4(){int x = 5;System.out.print("x+++1 : ");System.out.println(x++ +1);//5+1}public static void method5(){int x = 5;--x;//4System.out.print("--x : ");System.out.println(x);}public static void method6(){int x = 5;//-6System.out.print("~x : ");System.out.println((~x));}public static void method7(){int x = 5;int q = 0;q = (++x) +(++x) + (++x);//6+7+8System.out.print("(++x) + (++x) + (++x) :");System.out.println(q);}public static void method8(){int x = 5;int q = 0;q = ++x+x+++1+x++;//6+6+1+7System.out.print("++x + x + ++1 + x++ :");System.out.println(q);}public static void method9(){int x = 5;int q = 0;q = ++x + ++x + x + ++x;//6+7+7+8System.out.print("++x + ++x + x + ++x :");System.out.println(q);}
很多人不知道準確的說出結果是多少。
利用javap命令。 javap -c 檔案名稱.可以看到準確的位元組碼執行順序。去看看java是如何執行的。
這樣你將會不在疑惑。