1. 程式人生 > >Java千百問_03基礎語法(013)_>、>>、>>>有什麼區別

Java千百問_03基礎語法(013)_>、>>、>>>有什麼區別

1、>、>>、>>>有什麼區別

瞭解java運算子看這裡:java種的運算子都有哪些
瞭解java運算子優先順序看這裡:java運算子的優先順序是怎樣的
“>”屬於關係運算符,而“>>”、”>>>”按位運算子,看一下它們各自的含義:

  1. 運算子>
    關係運算符,表示大於
    如:if(a>b)…結果是boolean型別。

  2. 運算子>>
    按位運算子,表示右移<<表示左移
    j<< i。相當於num除以2的n次冪,j/(int) (Math.pow(2, i))。
    如:int i=15; i>>2的結果是3,移出的部分將被拋棄


    轉為二進位制的形式可能更好理解,0 0000 1111(15)右移2位的結果是0 0000 0011(3)。
    瞭解二進位制運算看這裡:二進位制是怎樣做位運算的

  3. 運算子>>>
    按位運算子,表示無符號右移
    與>>類似,但移動時忽略符號位,空位都以0補齊
    無符號右移運算子>>>只是對32位和64位的值有意義(以及負值),其餘情況與>>一致。

例項:

System.out.println("1、以下測試>:");
int a = 15, b = 2, c = -15;
System.out.println(a > b);
System.out
.println("\n2、以下測試>>:"); System.out.println(a + " / (int) (Math.pow(2, " + b + "))) = " + (a / (int) (Math.pow(2, b)))); System.out.println(a + " >> " + b + " = " + (a >> b)); System.out.println(c + " >> " + b + " = " + (c >> b)); System.out.println("\n3、以下測試>>>:"
); System.out.println(a + " >>> " + b + " = " + (a >>> b)); System.out.println(c + " >>> " + b + " = " + (c >>> b));

執行結果如下:

1、以下測試>:
true
2、以下測試>>:
15 / (int) (Math.pow(2, 2))) = 3
15 >> 2 = 3
-15 >> 2 = -4
3、以下測試>>>:
15 >>> 2 = 3
-15 >>> 2 = 1073741820