日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java基础(四) java运算顺序的深入解析

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基础(四) java运算顺序的深入解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 從左往右的計算順序

??與C/C++不同的是,在Java中,表達式的計算與結果是確定的,不受硬件與環境的影響。如:

int i = 5; int j = (i++) + (i++) +(i++);

??在C/C++中,這個例子的運算結果將會根據不同的開發環境而不同。Turbo C下,j的值是15;在VC下,j的值是 18。

??在Java中,表達式的計算順序是從左往右的,也就是先計算左側的結果,再計算右側的結果。上面的例子計算結果就一定是 18。也就是說,右側(i++)表達式使用的 i 的值 就是 左側(i++)表達式計算完后 i 的值,即左側比右側先進行運算。

看下面幾個例子

@ Example 1

int a[] = new int[]{0,0,0,0};int i = 1;a[i++] = i++;System.out.println("i="+i);System.out.println(Arrays.toString(a));

運行結果:

i=3
[0, 2, 0, 0]

@ Example 2

int a[] = new int[]{0,0,0,0};int i = 1;a[i++] = i = 4;System.out.println("i="+i);System.out.println(Arrays.toString(a));

運行結果:

i=4
[0, 4, 0, 0]

@ Example 3

int a[] = new int[]{0,0,0,0};int b[] = new int[]{1,2,3,4,5};int cc[] = a;int i = 1;a[++i] = (a=b)[i]; System.out.println("i="+i);System.out.println("數組a[]: "+Arrays.toString(a));System.out.println("數組c[]: "+Arrays.toString(cc));

運行結果:

i=2
數組a[]: [1, 2, 3, 4, 5]
數組c[]: [0, 0, 3, 0]

2. 復合運算符的計算順序

??復合運算符有一個特點:可以自動將右側的運算結果類型轉換成左側操作數的類型。如:

byte b += 1; //正確b = b+1; //錯誤,1是整形int,所以右側的b+1的結果是int類型。需強制轉換

所以,復合類型的表達式,如 b += 1; 是相當于:

byte b = (int)(b + 1);

??除此之外, 復合運算符也是遵守操作數從右往左計算的原則。 也就是說,在執行賦值操作之前,首先會確定左側的操作數。

看下面的幾個例子:

int a = 1;a += ++a;System.out.println(a);

運行結果:

3

??根據上面的所說的,這個程序就不難理解了,先計算左側a的值是1,然后再計算出右側++a表達式的值是 2 ,最后便是計算 1+2 的值為 3,賦值給a。

如果還是覺得難理解的,可以寫成等價的普通式子,然后從左往右計算右側的表達式。這可能比較容易理解:

a = a + ++a;

再看一個例子,加深理解:

int a = 5;a *= a=2;System.out.println(a);

運行結果:
10

作者:jinggod
出處:http://www.cnblogs.com/jinggod/p/8424880.html

總結

以上是生活随笔為你收集整理的java基础(四) java运算顺序的深入解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。