位運算符主要針對二進制,它包括了:“與”、“非”、“或”、“異或”。從表面上看似乎有點像邏輯運算符,但邏輯運算符是針對兩個關係運算符來進行邏輯運算,而位運算符主要針對兩個二進制數的位進行邏輯運算。下面詳細介紹每個位運算符。
1.與運算符
與運算符用符號“&”表示,其使用規律如下:
兩個操作數中位都爲1,結果才爲1,否則結果爲0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 與的結果是:"+(a&b));
}
}
運行結果
a 和b 與的結果是:128
下面分析這個程序:
“a”的值是129,轉換成二進制就是10000001,而“b”的值是128,轉換成二進制就是10000000。根據與運算符的運算規律,只有兩個位都是1,結果纔是1,可以知道結果就是10000000,即128。
2.或運算符
或運算符用符號“|”表示,其運算規律如下:
兩個位只要有一個爲1,那麼結果就是1,否則就爲0,下面看一個簡單的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的結果是:"+(a|b));
}
}
運行結果
a 和b 或的結果是:129
下面分析這個程序段:
a 的值是129,轉換成二進制就是10000001,而b 的值是128,轉換成二進制就是10000000,根據或運算符的運算規律,只有兩個位有一個是1,結果纔是1,可以知道結果就是10000001,即129。
3.非運算符
非運算符用符號“~”表示,其運算規律如下:
如果位爲0,結果是1,如果位爲1,結果是0,下面看一個簡單例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的結果是:"+(~a));
}
}
4.異或運算符
異或運算符是用符號“^”表示的,其運算規律是:
兩個操作數的位中,相同則結果爲0,不同則結果爲1。下面看一個簡單的例子。
public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 與 b 異或的結果是:"+(a^b));
}
}
運行結果
a 與 b 異或的結果是:13
分析上面的程序段:a 的值是15,轉換成二進制爲1111,而b 的值是2,轉換成二進制爲0010,根據異或的運算規律,可以得出其結果爲1101 即13。
Java中的運算符(操作符)
程序的基本功能是處理數據,任何編程語言都有自己的運算符。因爲有了運算符,程序員才寫出表達式,實現各種運算操作,實現各種邏輯要求。
爲實現邏輯和運算要求,編程語言設置了各種不同的運算符,且有優先級順序,所以有的初學者使用複雜表達式的時候搞不清楚。這裏詳細介紹一下Java中的運算符。
Java運算符很多,下面按優先順序列出了各種運算符。
優先級 運算符分類 結合順序 運算符
由
高
到
低
分隔符 左結合 . [] ( ) ; ,
一元運算符 右結合 ! ++ -- - ~
算術運算符
移位運算符
左結合 * / % + - << >> >>>
關係運算符 左結合 < > <= >= instanceof(Java 特有) = = !=
邏輯運算符 左結合 ! && || ~ & | ^
三目運算符 右結合 布爾表達式?表達式1:表達式2
賦值運算符 右結合 = *= /= %= += -= <<= >>= >>>= &= *= |=
一、一元運算符
因操作數是一個,故稱爲一元運算符。
運算符 含義 例子
- 改變數值的符號,取反 -x(-1*x)
~ 逐位取反,屬於位運算符 ~x
++ 自加1 x++
-- 自減1 x--
++x 因爲++在前,所以先加後用。
x++ 因爲++在後,所以先用後加。
注意:a+ ++b和a+++b是不一樣的(因爲有一個空格)。
int a=10;
int b=10;
int sum=a+ ++b;
System.out.println("a="+a+",b="+b+",sum="+sum);
運行結果是: a=10,b=11,sum=21
int a=10;
int b=10;
int sum=a+++b;
System.out.println("a="+a+",b="+b+",sum="+sum);
運行結果是:a=11,b=10,sum=20
n=10;
m=~n;
變量n的二進制數形式: 00000000 00000000 00000000 00001010
逐位取反後,等於十進制的-11: 11111111 11111111 11111111 11110101