java基本語法——運算子
一、算術運算子
運算子 |
運算 |
範例 |
結果 |
+ |
正號 |
+3 |
3 |
- |
負號 |
b=4; -b |
-4 |
+ |
加 |
5+5 |
10 |
- |
減 |
6-4 |
2 |
* |
乘 |
3*4 |
12 |
/ |
除 |
5/5 |
1 |
% |
取模 |
5%5 |
0 |
++ ++ |
自增(前):先運算後取值 自增(後):先取值後運算 |
a=2;b=++a; a=2;b=a++; |
a=3;b=3 a=3;b=2 |
- - - - |
自減(前):先運算後取值 自減(後):先取值後運算 |
a=2;b=- -a a=2;b=a- - |
a=1;b=1 a=1;b=2 |
+ |
字串相加 |
“He”+”llo” |
“Hello” |
注意:
1.如果對負數取模,可以把模數負號忽略不記,如:5%-2=1;但被模數是負數就另當別論,例如:-21%5=-1。
2.對於除號“/”,它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而捨棄小數部分。 例如:
int x=3510;
x=x/1000*1000; //x的結果是3000
3.“+”除字串相加功能外,還能把非字串轉換成 字串.例如:
System.out.println("5+5="+5+5); //列印結果是5+5=55
三、賦值運算子
- 符號:=
- 作用:將資料、變數或物件賦值給相應型別的變數。例如:
int i = 75; //將資料賦值給變數 long l = i; //將變數賦值給變數 Object object = new Object(); //建立物件
- 擴充套件賦值運算子: +=, -=, *=, /=, %=
三、比較運算子
運算子 |
運算 |
範例 |
結果 |
== |
相等於 |
4==3 |
false |
!= |
不等於 |
4!=3 |
true |
< |
小於 |
4<3 |
false |
> |
大於 |
4>3 |
true |
<= |
小於等於 |
4<=3 |
false |
>= |
大於等於 |
4>=3 |
true |
instanceof |
檢查是否是類的物件 |
“Hello” instanceof String |
true |
注意:
1.比較運算子的結果都是boolean型,也就是要麼是true,要麼是false。
2.比較運算子“==”不能誤寫成“=” 。
四、邏輯運算子
運算子 |
運算 |
範例 |
結果 |
& |
AND(與) |
false & true |
false |
| |
OR(或) |
false|true |
true |
^ |
XOR(異或) |
true^false |
true |
! |
Not(非) |
!true |
false |
&& |
AND(短路) |
false&&true |
false |
|| |
OR(短路) |
false||true |
true |
注意:
1.邏輯運算子用於連線布林型表示式,在Java中不可以寫成3<x<6,應該寫成x>3 && x<6 。
2.“&”和“&&”的區別:
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算。
3.和“||”的區別同理,雙或時,左邊為真,右邊不參與運算。
4.異或( ^ )與或( | )的不同之處是:對於 ^ 而言,當左右都為true時,結果為false。
五、位運算子
位運算子 |
||
運算子 |
運算 |
範例 |
<< |
左移 |
3 << 2 = 12 --> 3*2*2=12 |
>> |
右移 |
3 >> 1 = 1 --> 3/2=1 |
& |
按位與 |
6 & 3 = 2 |
| |
按位或 |
6 | 3 = 7 |
^ |
按位異或 |
6 ^ 3 = 5 |
~ |
按位取反 |
~9=6 |
位運算子的細節 |
|
<< |
被移除的高位丟棄,空缺位補0。 |
>> |
被移位的二進位制最高位是0,右移後,空缺位補0; 最高位是1,空缺位補1。 |
& |
二進位制位進行&運算,只有1&1時結果是1,否則是0; |
| |
二進位制位進行 | 運算,只有0 | 0時結果是0,否則是1; |
^ |
相同二進位制位進行 ^ 運算,結果是0;1^1=0 , 0^0=0 不相同二進位制位 ^ 運算結果是1。1^0=1 , 0^1=1 |
~ |
二進位制位進行~運算,0修改為1,1修改為0 |
注意:位運算是指直接對二進位制位進行運算
六、三元運算子
格式:
(條件表示式)?表示式1:表示式2;
如果條件為true,運算後的結果是表示式1;
如果條件為false,運算後的結果是表示式2;
例如:
int store = 12;
System.out.println(store<=5?"庫存不足!":"庫存量:"+store); //輸出結果為庫存量:12
以上程式碼等價於如下的“if…else”語句:
int store = 12;
if (store<5){
System.out.println("庫存不足!");
}else{
System.out.println("庫存量:"+store);
}
注意:
三元運算子“?:”中的表示式1和表示式2,只有其中一個被執行。例如:
int x = 5,y = 7;
System.out.println(x>y?x++:y++); //輸出結果為7
System.out.println("x="+x); //x的值為5
System.out.println("y="+y); //y的值為8
七、Java中運算子的優先順序與結合方向
優先順序 |
運算子 |
描述 |
結合性 |
1 |
.、[]、( ) |
域、陣列、括號 |
從左至右 |
2 |
++ 、--、-、! |
一元運算子 |
從右至左 |
3 |
*、/、% |
乘、除、取餘 |
從左至右 |
4 |
+ 、- |
加、減 |
從左至右 |
5 |
<< 、>> 、>>> |
位運算 |
從左至右 |
6 |
< 、<=、>、>= |
邏輯運算 |
從左至右 |
7 |
== 、!= |
邏輯運算 |
從左至右 |
8 |
& |
按位與 |
從左至右 |
9 |
^ |
按位異或 |
從左至右 |
10 |
| |
按位或 |
從左至右 |
11 |
&& |
邏輯與 |
從左至右 |
12 |
|| |
邏輯或 |
從左至右 |
13 |
?: |
條件運算 |
從右至左 |
14 |
=、*=、/=、%= 、+=、-=、<<=、>>=、>>>=、&=、^=、|= |
位運算 |
從右至左 |