1. 程式人生 > >Java運算符使用總結(重點:自增自減、位運算和邏輯運算)

Java運算符使用總結(重點:自增自減、位運算和邏輯運算)

運算 計算器 可讀性 過多 移位運算 style avi 學會 new

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 和 0
System.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 192
System.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運算符使用總結(重點:自增自減、位運算和邏輯運算)