<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java 操作符知多少

          共 13650字,需瀏覽 28分鐘

           ·

          2022-08-02 21:54

          收錄更新:https://github.com/cunyu1943/JavaPark

          目錄

          • 前言

          • 算術(shù)運算符

          • 關(guān)系運算符

          • 位運算符

          • 邏輯運算符

          • 賦值運算符

          • 條件運算符(? :)

          • instanceof

          • 運算符優(yōu)先級

          • equals() 和 ==

          • 總結(jié)


          前言

          之前的文章 中介紹了 Java 變量和數(shù)據(jù)類型,那么如何對他們進(jìn)行運算呢?這就要用到運算符的相關(guān)知識點了。所謂運算符,就是指 Java 中對變量或者字面量進(jìn)行操作的符號。下面就來具體看看,常用的操作符。

          本文主要內(nèi)容預(yù)告如下:

          • 算術(shù)運算符
          • 關(guān)系運算符
          • 位運算符
          • 邏輯運算符
          • 賦值運算符
          • 條件運算符

          好了,話不多說,開始正式內(nèi)容吧!

          算術(shù)運算符

          常見的算術(shù)運算符主要有下表中的幾種,主要是針對整型和浮點類型的運算。

          操作符描述
          +加法 - 相加運算符兩側(cè)的值
          -減法 - 左操作數(shù)減去右操作數(shù)
          *乘法 - 相乘操作符兩側(cè)的值
          /除法 - 左操作數(shù)除以右操作數(shù)
          取余 - 左操作數(shù)除以右操作數(shù)的余數(shù)
          ++自增: 操作數(shù)的值增加 1
          --自減: 操作數(shù)的值減少 1

          注意++-- 可以放在操作數(shù)之前,也可以放在操作數(shù)之后;位于操作數(shù)之前時,先自增/減,再賦值;位于操作數(shù)之后,先賦值,再自增/減;總結(jié)起來就是符號在前就先加/減,符號在后就后加/減

          以下是部分算術(shù)運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu1943
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 9:43
           * @description : 算術(shù)運算符演示
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 10;
                  int num2 = 20;
                  int num3 = 30;
                  int num4 = 40;

                  System.out.println("num1 + num2 = " + (num1 + num2));
                  System.out.println("num1 - num2 = " + (num1 - num2));
                  System.out.println("num1 * num2 = " + (num1 * num2));
                  System.out.println("num2 / num1 = " + (num2 / num1));
                  System.out.println("num2 % num1 = " + (num2 % num1));
                  System.out.println("num3 % num1 = " + (num3 % num1));
                  System.out.println("num1++   = " + (num1++));
                  System.out.println("num1--   = " + (num1--));
                  // 查看 ++ 在操作數(shù)前后位置時結(jié)果的不同
                  System.out.println("num4++   = " + (num4++));
                  System.out.println("++num4   = " + (++num4));
              }
          }

          這里不難看出,無論是 ++ 還是 --,當(dāng)它們單獨寫一行時,不管是放在變量前邊還是后邊,其最終結(jié)果都是一樣的。但如果將它們參與運算,此時的效果就不一樣了,這里需要注意。

          int a = 10;
          int b = a++;

          以上代碼中,先進(jìn)行了 b = a 的賦值操作,所以此時 b 的值是 10

          int a = 10;
          int b = ++a;

          而此時,先要對 a 進(jìn)行加一的操作之后,再將 a 的值賦予 b,所以此時 b 的值為 11

          關(guān)系運算符

          關(guān)系運算符主要是指兩個數(shù)據(jù)間的關(guān)系,兩者之間的比較結(jié)果用邏輯值來表示,常用來比較判斷兩個變量或常量的大小。常見的關(guān)系運算符及含義如下表:

          運算符描述
          ==檢查如果兩個操作數(shù)的值是否相等,如果相等則條件為真
          !=檢查如果兩個操作數(shù)的值是否相等,如果值不相等則條件為真
          >檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是那么條件為真
          <檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是那么條件為真
          >=檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是那么條件為真
          <=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是那么條件為真

          以下是部分關(guān)系運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 9:45
           * @description : 關(guān)系運算符
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 100;
                  int num2 = 220;


                  System.out.println("num1 == num2 = " + (num1 == num2));
                  System.out.println("num1 != num2 = " + (num1 != num2));
                  System.out.println("num1 > num2 = " + (num1 > num2));
                  System.out.println("num2 < num1 = " + (num2 < num1));
                  System.out.println("num2 <= num1 = " + (num2 <= num1));
                  System.out.println("num2 >= num1 = " + (num2 >= num1));

              }
          }

          位運算符

          位運算符主要用來對操作數(shù)二進(jìn)制的位進(jìn)行運算,其運算結(jié)果是整型的。常見的位運算符及功能描述如下表所示:

          操作符描述
          如果相對應(yīng)位都是 1,則結(jié)果為 1,否則為 0
          |如果相對應(yīng)位都是 0,則結(jié)果為 0,否則為 1
          ^如果相對應(yīng)位值相同,則結(jié)果為 0,否則為 1
          ?按位取反運算符翻轉(zhuǎn)操作數(shù)的每一位,即 0 變成 1,1 變成 0
          <<按位左移運算符。左操作數(shù)按位左移右操作數(shù)指定的位數(shù)
          >>按位右移運算符。左操作數(shù)按位右移右操作數(shù)指定的位數(shù)
          >>>按位右移補零操作符。左操作數(shù)的值按右操作數(shù)指定的位數(shù)右移,移動得到的空位以零填充

          以下是部分位運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 10:02
           * @description : 位運算符
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 10;
                  int num2 = 20;

                  System.out.println("num1 & num2 = " + (num1 & num2));
                  System.out.println("num1 | num2 = " + (num1 | num2));
                  System.out.println("num1 ^ num2 = " + (num1 ^ num2));
                  System.out.println("~ num2 = " + (~num2));
                  System.out.println("num1 << 2 = " + (num1 << 2));
                  System.out.println("num1 >> 2 = " + (num1 >> 2));
                  System.out.println("num1 >>> 2 = " + (num1 >>> 2));
              }
          }

          邏輯運算符

          邏輯運算符通過將關(guān)系表達(dá)式連接起來,從而組成一個復(fù)雜的邏輯表達(dá)式,從而判斷程序中的表達(dá)式是否成立,其結(jié)果返回 truefalse

          操作符描述
          &&稱為邏輯與運算符。當(dāng)且僅當(dāng)兩個操作數(shù)都為真,條件才為真
          ||稱為邏輯或操作符。如果任何兩個操作數(shù)任何一個為真,條件為真
          !稱為邏輯非運算符。用來反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為 true,則邏輯非運算符將得到 false

          以下是邏輯運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 10:07
           * @description : 邏輯運算符
           */


          public class Main {
              public static void main(String[] args) {
                  boolean positive = true;
                  boolean negative = false;

                  System.out.println("positive && negative = " + (positive && negative));
                  System.out.println("positive || negative = " + (positive || negative));
                  System.out.println("!(positive || negative) = " + !(positive || negative));

              }
          }

          賦值運算符

          賦值運算符表示一個動作,將其右側(cè)的值送到左側(cè)的變量中。常見的賦值運算符及含義如下表所示:

          操作符描述
          =簡單的賦值運算符,將右操作數(shù)的值賦給左側(cè)操作數(shù)
          +=加和賦值操作符,它把左操作數(shù)和右操作數(shù)相加賦值給左操作數(shù)
          -=減和賦值操作符,它把左操作數(shù)和右操作數(shù)相減賦值給左操作數(shù)
          *=乘和賦值操作符,它把左操作數(shù)和右操作數(shù)相乘賦值給左操作數(shù)
          /=除和賦值操作符,它把左操作數(shù)和右操作數(shù)相除賦值給左操作數(shù)
          %=取模和賦值操作符,它把左操作數(shù)和右操作數(shù)取模后賦值給左操作數(shù)
          << =左移位賦值運算符
          >>=右移位賦值運算符
          &=按位與賦值運算符
          ^=按位異或賦值操作符
          |=按位或賦值操作符

          以下是部分賦值運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 10:13
           * @description : 賦值運算符
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 100;
                  int num2 = 1000;

                  System.out.println("num1 + num2 = " + (num1 + num2));
                  System.out.println("num1 += num2 = " + (num1 += num2));
                  System.out.println("num1 - num2 = " + (num1 - num2));
                  System.out.println("num1 -= num2 = " + (num1 -= num2));
                  System.out.println("num1 * num2 = " + (num1 * num2));
                  System.out.println("num1 *= num2 = " + (num1 *= num2));
                  System.out.println("num1 & num2 = " + (num1 & num2));
                  System.out.println("num1 &= num2 = " + (num1 &= num2));
              }
          }

          條件運算符(? :)

          也叫作三元運算符,共有 3 個操作數(shù),且需要判斷布爾表達(dá)式的值,常用來取代某個 if-else 語句。其語法結(jié)構(gòu)如下所示:

          關(guān)系表達(dá)式?表達(dá)式 1:表達(dá)式 2;
          variable x = (expression) ? value if true : value if false

          以下是條件運算符的示例以及運行結(jié)果:

          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 10:18
           * @description : 條件運算符
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 30;
                  int num2 = 300;

                  int result = num1 > num2 ? num1 : num2;
                  System.out.println("The max between num1 and num2 is " + result);
              }
          }

          instanceof

          用于操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型),其語法結(jié)構(gòu)如下。該知識點涉及到類與對象,此處就不做展開,等到后邊學(xué)習(xí)類與對象之后,就能理解了。

          ( Object reference variable ) instanceof  (class/interface type)

          運算符優(yōu)先級

          運算符有很多,如果我們將多個運算符組合在一起,那它們又該先計算哪一個,然后再計算哪一個呢?其實就像我們?nèi)粘E抨犚粯樱\算符也是有優(yōu)先級的。常用運算符的優(yōu)先級如下表所示,在我們使用時,如果涉及到一個表達(dá)式中含有多個運算符,一定要注意運算符的優(yōu)先級。當(dāng)然了,讓我們背下來這些也是挺難的。不過不要緊,我們只需要學(xué)會靈活運用 () 就好了。我們可以利用 () 將需要先計算的表達(dá)式括起來,然后再去進(jìn)行下一步的運算。

          優(yōu)先級運算符
          1.(){}
          2!~++--
          3*/%
          4+-
          5<<>>>>>
          6<<=>>=instanceof
          7==!=
          8&
          9^
          10|
          11&&
          12||
          13?:
          14=+=-=*=/=%=&=

          equals() 和 ==

          • ==

          基本數(shù)據(jù)類型用 == 比較的是值,而 用于引用數(shù)據(jù)類型時判斷兩個對象的內(nèi)存地址是否相等,即兩對象是否是同一個對象;

          本質(zhì)來講,由于 Java 中只有值傳遞,所以不管是基本數(shù)據(jù)類型還是引用數(shù)據(jù)類型,比較的其實都是值,只不過引用類型變量存的值是對象的地址;

          • equals()

          作用也是判斷兩個對象是否相等,但是 不能用于基本數(shù)據(jù)類型變量的比較。存在于 Object() 類中,所以所有類都具有 equals() 方法存在兩種使用情況:

          1. 類未覆蓋 equals() 方法:此時通過 equals() 比較該類的兩個對象時,等價于 == 比較這兩個對象,默認(rèn)使用 Object 類中的 equals() 方法;
          2. 類覆蓋了 equals() 方法:一旦覆蓋了該方法,則用來比較兩個對象的內(nèi)容是否相等,如我們常用的 String、BitSet、Data、File 就覆蓋了 equals() 方法;
          /**
           * @author : cunyu
           * @version : 1.0
           * @className : Main
           * @date : 2021/4/15 13:26
           * @description : == 和 equals 用法
           */


          public class Main {
              public static void main(String[] args) {
                  int num1 = 10;
                  int num2 = 10;
                  int num3 = 20;
                  String str1 = "村雨遙";
                  String str2 = new String("村雨遙");

                  // == 用于基本數(shù)據(jù)類型,用于比較兩者是否相等
                  System.out.println("num1 == num2:" + (num1 == num2)); // true
                  System.out.println("num3 == num3:" + (num2 == num3)); // false
                  // 而用于引用類型則表示兩者是否指向同一對象
                  System.out.println("str1 == str2:" + (str1 == str2)); // false

                  // equals 用于比較引用類型是否內(nèi)容是否相同
                  System.out.println("str1 equals str2:" + str1.equals(str2)); // true

                  // equals 不能用于基本數(shù)據(jù)類型比較
                  //        System.out.println(num1.equals(num2));
              }
          }

          總結(jié)

          好了,以上就是有關(guān)操作符系列的相關(guān)知識點了。老規(guī)矩,如果您覺得對您有所幫助,那就點個贊吧 ??.

          對于文中所遺漏或者存在錯誤的知識點,也歡迎大家評論指正呀!

          - END -
          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99视频久久 | 亚洲精品视频免费观看 | 日日夜夜精选视频 | 91成人视频18 | 啪一啪天天 |