標籤:內建 理解 fonts 簡化 .net 進入 總結 算術運算子 並且
Java運算子共包括這幾種:算術運算子、比較子、位元運算符、邏輯運算子、賦值運算子和其他運算子。(該圖來自網路)
簡單的運算子,就不過多介紹使用了,可自行測試。關於賦值運算,可以結合算術運算和位元運算來簡化代碼。
int a = 5; a += a; // a = a + a; a -= a; //a = a - a; a /= a; // a = a / a; a %= a; // a = a % a; a &= 6; // a = a & 6; //.....
理解自增自減運算子
自增自減分為前置和後置。例如:i++ ++i i-- --i。 要明確一點,前置與後置的自增或自減如果沒有運用到運算式運算中,那麼是沒區別的,若是參與到運算式的運算中,只需記住:誰在前面就先執行誰。
int a = 0; a++; //或者++a System.out.println(a); // a輸出1
//最常見的for迴圈中,在迭代條件中,i++ 和 ++i無區別,因為沒有用於運算式。
將前置自增和後置自增運用到運算式中。
int a = 5; System.out.println(a--); //5,先列印a的值,之後a自減1 System.out.println(a); //4 System.out.println(++a); //5, 先對a值自增,然後列印a值
複雜一點,更好的理解前置和後置的區別:
int a = 6; int b = 8; int c = ++a + b-- - a-- + --b + b++ + --a; System.out.printf("%d|%d|%d", a,b,c); // 5,7,25
使用圖片來理解會更加一目瞭然。
再隨便給一個,按照圖示方式去理解自增自減。
int a = 6,b = 8; int c = (--a) + (a--) - (b--) + (++b) + (a++) - (b--); //加括弧更容易閱讀// int c = --a + a-- - b-- + ++b + a++ - b--; System.out.printf("%d|%d|%d", a,b,c); // 5,7,6 }
在Java中,位元運算常用的就是移位元運算了。所以會按照個人的理解去回顧這個知識點,不會太深入。如果對位元運算感興趣的可以去其他部落格搜搜,講解非常詳細。
移位元運算所進行的操作是在二進位的基礎之上對數字進行平移,有左移運算和右移運算。
給一個代碼例子:
//測試右移位元運算 //結果是1 和 0System.out.println(6>>2); //6右移2位System.out.println(8>>5); //8右移5位
本質是二進位的運算,所以我們將6 和 8轉成二進位。
如果不懂二進位也可以使用電腦內建的計算機,改成程式員用的就可以了。但建議一定要學會二進位,並且熟練與八進位和十六進位的轉換,會讓你更明白電腦原理。
進入正題:
//6的二進位
0000 0000 0110
0000 0000 0001 //右移2位
//1 乘以2的0次方 輸出1
//8的二進位
0000 0000 1000
0000 0000 0000 //右移5位
//0乘以2的0次方 輸出0
//測試左移運算
//結果為128 192System.out.println(4<<5);System.out.println(3<<6);
//4的二進位
0000 0100
1000 0000 //左移5位
//1乘以2的7次方 輸出128
//3的二進位
0000 0011
1100 0000 //左移6位
//1乘以2的7次方 + 1乘以2的6次方 輸出192
上面是以二進位的平移方式來得出的,還有取巧的方式,計算2的次方非常迅速。
就是:左移幾位就乘以2的幾次方 , 右移幾位就除以2的幾次方
以 4<<5 為例 : 就是4 乘以 2 的5次方 4 * 32 可以很快得出結果128
10>>2 : 10除以 2的2次方 10/4 = 2
要想得到2的10次方 只需要 1<<10 即可。
--------------------------------------------------------------------------------------------------------
關於的Java運算子,不需要去記優先順序,使用括弧運算子能更好的增加可讀性。
Java運算子使用總結(重點:自增自減、位元運算和邏輯運算)