java運算符

計算機的最基本用途之一就是執行數學運算,做爲一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。
運算符和表達式是Java程序的基本組成要素。運算符是一種特殊的符號(在程序中可以進行特定操做的符號),用以表示數據的運算,賦值和比較。不一樣的運算符用來完成不一樣的運算。
java語言使用運算符將一個或者多個操做數連綴成執行性語句,造成表達式,表達式是由運算符和操做數按必定語法規則組成的符號序列(是由運算符鏈接起來的式子叫作表達式)。
運算符按照其要求的操做數數目來分,能夠有單目運算符、雙目運算符和三目運算符,它們分別對應於1個、2個、3個操做數。運算符按其功能來分,有算術運算符、賦值運算符、關係運算符、邏輯運算符、位運算符和三目運算符等。java


1、算術運算符

算術運算符主要用於進行基本的算術運算,如加法、減法、乘法、除法等。
Java 中經常使用的算術運算符:算法

算術運算符 含義
+ 加法運算 、字符串拼接運算、正數
- 減法運算、負數
* 乘法運算、通配符
/ 除法運算(求商數)
% 除法運算(求餘數)
++ 自加1
-- 自減1

其中,++和--既能夠出如今操做數的左邊,也能夠出如今右邊,但結果是不一樣的。能夠進行單獨使用,也能夠混合使用。
備註:若是變量在++運算符的左邊,那麼在運算過程當中,先進行自身加1,在執行++運算,變量在++運算符的右邊,那麼在運算過程當中,先進行那麼先使用原先的數值,再執行++運算符左邊的算法。
對於整數的表達式來講,除法用的是整除,求的是商數,結果任是整數
一旦運算中出現了不一樣的數據類型,那麼結果將會是數據類型範圍大的那種
說明:無論變量是在++或--運算符的左邊仍是右邊,對於該變量自己都會作自+1或-1運算。
注意:必定要注意哦!自增和自減運算符只能用於操做變量,不能直接用於操做數值或常量!例如 5++ 、 8-- 等寫法都是錯誤滴!
% 用來求餘數,也稱爲」取模運算符「
例子:ide

public class HelloWorld{
    public static void main(String[] args) {
        int age1=24;
        int age2=18;
        int age3=36;
        int age4=27;
        int sum=age1+age2+age3+age4;
        double avg=sum/4;
        int minus=Math.abs(age1-age2);
        int newAge=--age1;
        System.out.println("四個年齡的總和:"+sum);
        System.out.println("四個年齡的平均值:"+avg);
        System.out.println("age1 和 age2年齡差值:"+minus);
        System.out.println("age1自減後的年齡:"+newAge);

    }
}

2、賦值運算符

賦值運算符是指爲變量或常量指定數值的符號。如可使用 「=」 將右邊的表達式結果賦給左邊的操做數。
Java 支持的經常使用賦值運算符,以下表所示:code

運算符 名稱 舉例
= 賦值 c=a+b 將把a+b獲得的值賦給c
+= 加等與 c+=a等價於c=c+a
-= 減等於 c-=a等價於c=c-a
*= 乘等於 c=a等價於c=c=a
/= 商等於 c/=a等價於c=c/a
%= 餘等於(模等於) c%=a等價於c=c%a

備註:
1.=是基本的賦值運算符
2.剩下的都是符合賦值運算符
3.只有變量纔可使用賦值運算符,常量不能進行賦值
4.複合賦值運算符其中隱含了一個強制類型轉換
例子:對象

public class HelloWorld{
    public static void main(String[] args) {
        int one = 10 ;
        int two = 20 ;
        int three = 0 ;
        three=one+two;
        System.out.println("three = one + two ==> "+three);
        three+=one;
        System.out.println("three += one ==> "+three);
        three-=one;
        System.out.println("three -= one ==> "+three);
        three*=one;
        System.out.println("three *= one ==> "+three);
        three/=one;
        System.out.println("three /= one ==> "+three);
        three%=one;
        System.out.println("three %= one ==> "+three);
    }
}

3、比較運算符

比較運算符用於判斷兩個數據的大小,例如:大於、等於、不等於。比較的結果是一個布爾值( true 或 false )。
Java 中經常使用的比較運算符以下表所示:three

比較運算符 名稱 例子 結果
> 大於比較 a=3;b=1;a>b true
< 小於比較 a=3;b=1;a<b false
>= 大於等於比較 a=3;b>=1 true
<= 小於等於比較 a=3;b=1;a<=b false
== 相等比較 a=3;b=1;a==b false
!= 不等於比較 a=3;b=1;a!=b true

注意哦:
一、 > 、 < 、 >= 、 <= 只支持左右兩邊操做數是數值類型
二、 == 、 != 兩邊的操做數既能夠是數值類型,也能夠是引用類型
三、>=、<=該運算符運算過程當中只要知足其中一種情形結果即爲true
四、若是進行屢次判斷,不能連着寫。內存

public class HelloWorld{
    public static void main(String[] args) {
        int a=16;
        double b=9.5;
        String str1="hello";
        String str2="imooc";
        System.out.println("a等於b:" + (a  == b));
        System.out.println("a大於b:" + (a  > b));
        System.out.println("a小於等於b:" + (a <  b));
        System.out.println("str1等於str2:" + (str1.equals(str2)));
    }
}

ps: 一、java中equals和==的區別 值類型是存儲在內存中的堆棧(簡稱棧),而引用類型的變量在棧中僅僅是存儲引用類型變量的地址,而其自己則存儲在堆中。
  二、==操做比較的是兩個變量的值是否相等,對於引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。
  三、equals操做表示的兩個變量是不是對同一個對象的引用,即堆中的內容是否相同。
  四、==比較的是2個對象的地址,而equals比較的是2個對象的內容,顯然,當equals爲true時,==不必定爲true。字符串


4、邏輯運算符

邏輯運算符主要用於進行邏輯運算。Java 中經常使用的邏輯運算符以下表所示:數學

邏輯運算符 名稱 例子 結果
&& a&&b 若是a與b都爲true,則返回true
a b 若是a與b任一爲true,則返回true
!a 若是a爲flase,則返回true,即取反
異域 ^ a^b 若是a和b有且僅有一個true,則返回true

咱們能夠從「投票選舉」的角度理解邏輯運算符:
一、 與:要求全部人都投票贊成,才能經過某議題
二、 或:只要求一我的投票贊成就能夠經過某議題
三、 非:某人本來投票贊成,經過非運算符,可使其投票無效
四、 異或:有且只能有一我的投票贊成,才能夠經過某議題
注意:
&與&&的異同點:
相同點:都是作與運算
不一樣點:&&能夠實現斷路(短路)
備註:短路效果,當&&符號左邊的布爾型值能夠肯定爲false的時候,那麼程序在執行到&&符號的時候,會發生跳躍,也就是&&後面的表達式程序不在執行
|與||的異同點:
相同點:都是作或運算
不一樣點:||能夠實現斷路(短路)
備註:短路效果,當||符號左邊的布爾型值能夠肯定爲true的時候,那麼程序在執行到||符號的時候,會發生跳躍,也就是||後面的表達式程序不在執行

例子:it

public class HelloWorld {
    public static void main(String[] args) {
        boolean a = true; // a贊成
        boolean b = false; // b反對
        boolean c = false; // c反對
        boolean d = true; // d贊成
        //a與b都必需要贊成才能經過
        System.out.println((a && b) + " 未經過");
        //a與b必須有一人贊成才能經過
        System.out.println((a || b) + " 經過");
        //a爲反對才能經過
        System.out.println((!a) + " 未經過");
        //c與d中必須有且只有一人贊成才能經過
        System.out.println((c ^ d) + " 經過");
    }
}

5、條件運算符

條件運算符( ? : )也稱爲 「三元運算符」。
語法形式:布爾表達式 ? 表達式1 :表達式2
運算過程:若是布爾表達式的值爲 true ,則返回 表達式1 的值,不然返回 表達式2 的值

第一種例子:

public class HelloWorld {
    public static void main(String[] args) {
                int a = 10;
        int b = 20;
        System.out.println(a < b ? "a>b?": "a < b √");
        }
}

說明:將三目運算直接在輸出語句中使用
第二種例子:

public class HelloWorld {
    public static void main(String[] args) {
                int a = 10;
        int b = 20;
                int c = a > b ? a : b;
                System.out.println(c);
        }
}

說明:三目運算不在輸出語句中使用
注意:
若是三目運算符是在輸出語句中,那麼對三目運算符的結果值真假類型不要求。
若是不是在輸出語句中,在其餘的語句中,如賦值運算語句,那麼就須要嚴格控制三目運算符的結果值真假的數據類型,真假的結果值類型要一致,保持和賦值運算中的變量的數據類型一致


6、位運算符

下表列出了位運算符的基本運算,假設整數變量A的值爲60和變量B的值爲13:

操做符 描述 例子
若是相對應位都是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

備註:位運算計算機底層採用的對整數進行二進制運算二進制轉十進制爲2的次冪累加和無符號右移對於正數來講,空出來的最高位拿0補位沒有無符號左移運算符

相關文章
相關標籤/搜索