Java基礎(06)--運算子
阿新 • • 發佈:2020-08-09
Java基礎(06)--運算子
算術運算子
int A = 10;
int B = 20;
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加運算子兩側的值 | A + B 等於 30 |
- | 減法 - 左運算元減去右運算元 | A – B 等於 -10 |
* | 乘法 - 相乘操作符兩側的值 | A * B等於200 |
/ | 除法 - 左運算元除以右運算元 | B / A等於2 |
% | 取餘 - 左運算元除以右運算元的餘數 | B%A等於0 |
++ | 自增: 運算元的值增加1 | B++ 或 ++B 等於 21(區別詳見下文) |
-- | 自減: 運算元的值減少1 | B-- 或 --B 等於 19(區別詳見下文) |
package operator; // 普通案例 public class Demo1 { public static void main(String[] args) { int a = 10; int b = 20; // 二元運算子 System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b); // 0 System.out.println((double)a / b); // 除法存在小數,需要進行型別轉換 System.out.println(a / (float)b); } }
package operator; // 自動的型別轉換案例 public class Demo2 { public static void main(String[] args) { long a = 12233411931051254L; int b = 123; short c = 22; byte d = 12; System.out.println(a + b + c + d); // long System.out.println(b + c + d); // int System.out.println(c + d); // int } }
package operator; // 自增、自減案例 public class Demo3 { public static void main(String[] args) { // ++ -- 自增 自減 一元運算子 int a = 3; /* * 自增或自減符位置的不同含義 * */ int b = a++; // a先賦值給b,再自增 System.out.println(a); int c = ++a; // a先自增,再賦值給b System.out.println(a); System.out.println("a == " + a); System.out.println("b == " + b); System.out.println("c == " + c); // 冪運算 double pow = Math.pow(2, 3); System.out.println(pow); } }
關係運算符
byte A = 10;
byte B = 20;
運算子 | 描述 | 例子 |
---|---|---|
== | 檢查如果兩個運算元的值是否相等,如果相等則條件為真。 | (A == B)為假。 |
!= | 檢查如果兩個運算元的值是否相等,如果值不相等則條件為真。 | (A != B) 為真。 |
> | 檢查左運算元的值是否大於右運算元的值,如果是那麼條件為真。 | (A> B)為假。 |
< | 檢查左運算元的值是否小於右運算元的值,如果是那麼條件為真。 | (A <B)為真。 |
>= | 檢查左運算元的值是否大於或等於右運算元的值,如果是那麼條件為真。 | (A> = B)為假。 |
<= | 檢查左運算元的值是否小於或等於右運算元的值,如果是那麼條件為真。 | (A <= B)為真。 |
位運算子
位運算子作用在所有的位上,並且按位運算。假設a = 60,b = 13;它們的二進位制格式表示將如下:
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相對應位都是1,則結果為1,否則為0 | (A&B),得到12,即0000 1100 |
| | 如果相對應位都是 0,則結果為 0,否則為 1 | (A | B)得到61,即 0011 1101 |
^ | 如果相對應位值相同,則結果為0,否則為1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反運算子翻轉運算元的每一位,即0變成1,1變成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移運算子。左運算元按位左移右運算元指定的位數。 | A << 2得到240,即 1111 0000 |
>> | 按位右移運算子。左運算元按位右移右運算元指定的位數。 | A >> 2得到15即 1111 |
>>> | 按位右移補零操作符。左運算元的值按右運算元指定的位數右移,移動得到的空位以零填充。 | A>>>2得到15即0000 1111 |
package operator;
public class Demo5 {
public static void main(String[] args) {
/*
巧妙利用位移運算加快乘法計算(效率極高)
2 * 8 = 16 2*2*2*2
<< 左移
>> 右移
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 2
...
0000 1000 8
...
0001 0000 16
結論:
<< 左移n位相當於乘以2的n次方
>> 右移n位相當於除以2的n次方(有足夠位置可以右移)
*/
System.out.println(2 << 3);
System.out.println(3 << 3);
System.out.println(12 >> 2);
System.out.println(2 >> 1);
System.out.println(2 >> 2);
}
}
邏輯運算子
假設布林變數A為真,變數B為假
操作符 | 描述 | 例子 |
---|---|---|
&& | 稱為邏輯與運算子。當且僅當兩個運算元都為真,條件才為真。 | (A && B)為假。 |
|| | 稱為邏輯或操作符。如果任何兩個運算元任何一個為真,條件為真。 | (A || B)為真。 |
! | 稱為邏輯非運算子。用來反轉運算元的邏輯狀態。如果條件為true,則邏輯非運算子將得到false。 | !(A && B)為真。 |
package operator;
public class Demo4 {
public static void main(String[] args) {
// 與 或 非
boolean a = true;
boolean b = false;
System.out.println(b && a);
System.out.println(b || a);
System.out.println(!(a && b));
// 短路運算
int c = 5;
boolean d = (c < 4) && (c++ < 4);
System.out.println(d);
System.out.println(c);
}
}
短路邏輯運算子
當使用與邏輯運算子時,在兩個運算元都為true時,結果才為true,但是當得到第一個操作為false時,其結果就必定是false,這時候就不會再判斷第二個操作了。
public class LuoJi{
public static void main(String[] args){
int a = 5;//定義一個變數;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路邏輯運算子的結果為"+b);
System.out.println("a的結果為"+a);
}
}
賦值運算子
操作符 | 描述 | 例子 |
---|---|---|
= | 簡單的賦值運算子,將右運算元的值賦給左側運算元 | C = A + B將把A + B得到的值賦給C |
+ = | 加和賦值操作符,它把左運算元和右運算元相加賦值給左運算元 | C + = A等價於C = C + A |
- = | 減和賦值操作符,它把左運算元和右運算元相減賦值給左運算元 | C - = A等價於C = C - A |
* = | 乘和賦值操作符,它把左運算元和右運算元相乘賦值給左運算元 | C * = A等價於C = C * A |
/ = | 除和賦值操作符,它把左運算元和右運算元相除賦值給左運算元 | C / = A,C 與 A 同類型時等價於 C = C / A |
(%)= | 取模和賦值操作符,它把左運算元和右運算元取模後賦值給左運算元 | C%= A等價於C = C%A |
<< = | 左移位賦值運算子 | C << = 2等價於C = C << 2 |
>> = | 右移位賦值運算子 | C >> = 2等價於C = C >> 2 |
&= | 按位與賦值運算子 | C&= 2等價於C = C&2 |
^ = | 按位異或賦值操作符 | C ^ = 2等價於C = C ^ 2 |
| = | 按位或賦值操作符 | C | = 2等價於C = C | 2 |
package operator;
public class Demo6 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; // a = a + b
System.out.println(a);
a -= b; // a = a - b
System.out.println(a);
// 字串連線符 + String
System.out.println("" + a + b); // 1020
System.out.println(a + b + ""); // 30
}
}