1. 程式人生 > 實用技巧 >Java基礎(06)--運算子

Java基礎(06)--運算子

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
    }
}

其他運算子

三元運算子(?