IT培訓-高端面授IT培訓機構
          云和教育:云和數據集團高端IT職業教育品牌
          • 國家級
            全民數字素養與技能培訓基地
          • 河南省
            第一批產教融合型企業建設培育單位
          • 鄭州市
            數字技能人才(碼農)培養評價聯盟
          當前位置:
          首頁IT問答正文

          什么是Java運算?Java運算好學嗎?

          • 發布時間:
            2023-01-06
          • 版權所有:
            云和教育
          • 分享:

          提到運算,你可能會立即想到加、減、乘、除四則運算以及“九九乘法表”。Java 語言中有很多進行數據運算的方式,比如:算術運算、比較運算、邏輯運算、賦值運算、三目運算等。每一種運算方式,又都包含了很多的運算符,小編把這些運算符形象的稱為“十八般武藝”,學習 Java 中的運算,就是學習這些運算符的使用,也就是修煉這“十八般武藝”的過程。

          public class Test{
             public static void main(String[] args) {
                 int number = 1 + 2; // 使用加號(+)將常量1和2連接起來,構成了一個加法表達式,并把運算結果賦值給變量number
                 System.out.println(number); // 輸出number的值
            }
          }

          上面的式子就是使用運算符加號(+)將常量 1 和 2 連接起來,構成了一個加法表達式,并把運算結果賦值給變量 number,不出意外的話,打印結果應該是:

          public class Test{
             public static void main(String[] args) {
                 int number = 1 + 2; // 使用加號(+)將常量1和2連接起來,構成了一個加法表達式,并把運算結果賦值給變量number
                 System.out.println(number); // 輸出number的值
                 int count = number + 10; // 變量和常量同時參與運算
                 System.out.println(count); // 輸出計算結果
            }
          }

          打印結果:

          13

          除此之外,運算的方式也有很多,加法、減法、取余(取模)、比較運算等等,但它們都有一個共同的特點:每個表達式都會有一個運算結果。我們根據表達式運算結果的數據類型,將表達式的類型進行歸納分類,比如:

          整型表達式:運算結果為整數。比如: 1 + 210 * 205 - 3,它們的運算結果都是整數
          浮點型表達式:運算結果為浮點數。比如:3.14 * 20.618 + 0.3823.0 / 1,它們的運算結果都是浮點數
          布爾型表達式:運算結果為布爾類型的值。比如:2 > 1(20-10) < 15,它們的運算結果都是布爾型:要么true、要么false。
          練好了運算符、表達式的基本功,現在,我們可以開始學習真正的武藝了。

          算術運算

          先來幾個簡單的招式,好好復習我們小學時期的算術運算。Java 中的算術運算符【大概、也許】有七種:

          1669213255528_2.png

          前面四個運算符還算常見:+、 -、 *、 / ,雖然乘號(*)和除號(/)跟我們以前見到的長得不一樣,但并不難理解。百分號(%)在這里是“取余”、“取余”的意思,也就是說,使用百分號(%)可以得到數字 7 除以 3 之后的余數:1。而 ++ 和 — 就比較陌生了,它們分別代表數據 “自增1” 和 “自減1”,這種運算是我們以前沒見過的,接下來,我手把手教你每個招式——運算符的用法。

          1、加、減、乘、除

          四則運算的用法,代碼如下:

          public class Test{
             public static void main(String[] args) {
                 int num1 = 3;
                 int num2 = 4;
                 int num3 = 5;
                 int num4 = 10;
                 // 1.加法運算
                 int add = num1 + num2;
                 // 2.減法運算
                 int subtract = num2 - num1;
                 // 3.乘法運算
                 int multiply = num2 * num3;
                 // 4.除法運算
                 int divide = num4 / num3;
                 // 分別輸出運算結果
                 System.out.println(add); // 輸出加法計算結果
                 System.out.println(subtract); // 輸出減法計算結果
                 System.out.println(multiply); // 輸出乘法計算結果
                 System.out.println(divide); // 輸出除法計算結果
            }
          }

          輸出結果:

          7
          1
          20
          2

          除法運算有個細節要注意:如果相除的兩個數進行運算,除不盡怎么辦?猜想一下,下面這個行代碼會得到什么結果:

          System.out.println(7 / 3); // 即 7 / 3,結果是什么,2.333...還是2,還是1

          看結果:

          public class Test{
            public static void main(String[] args) {
            System.out.println(7 / 3);
            }
          }

          切記一點:除法運算符( / ),得到兩個數據相除的商,在 Java 語言中,整數除以整數結果還是整數,如果除不盡,會舍棄余數。也就是說,7 / 3 的商是2,余數為1,因為參與運算的被除數、除數都是整數(int類型),所以計算結果還是整數,舍棄了余數部分,結果是2。

          是不是有一種恍然大悟的感覺。這是 Java 中的運算與我們以前的認知第一個不一樣的地方。

          2、取模、自增(++)和自減(–)

          再教你三個進階招式(%、 ++、 –):

          public class Test{
             public static void main(String[] args) {
                 int num1 = 3;
                 int num2 = 4;
                 int num3 = 5;
                 int num4 = 10;
                 int remainder = num3 % num1; // 取模/取余運算,5對3取模,結果是?
                 System.out.println(remainder); // 輸出取模運算結果
                 num2++; // num2自增1
                 num4--; // num4自減1
                 System.out.println(num2); // 輸出自增之后的運算結果
                 System.out.println(num4); // 輸出自減之后的運算結果
            }
          }

          輸出結果:

          2
          5
          9

          百分號(%)是取模運算,也叫取余運算,是除法運算的一種擴展,只不過除法運算得到的結果是商,而取模運算得到的結果是余數。如果兩個數進行取模運算,結果是0,意味著什么?沒錯,這就是整除的效果,所以,取模運算(%)可以用來判斷兩個數是否能夠整除,也就是說,被除數是除數的倍數。

          加加(++)和減減(–)運算是讓變量進行自增或自減。這里要注意,不能將這兩個運算符直接使用到常量上,比如下面的代碼是錯誤的:

          1++; // 不允許常量自增或自減

          思考一下,為什么?那是因為常量的概念,規定了它不能夠被修改,所以,如果你想要獲得2,那么直接使用字面值常量2就行了,完全不需要使用另一個常量進行運算。還有個細節,上面的代碼,也可以把 ++ 和 — 放到變量的前面,這樣的運算結果是一樣的(放在變量前、后的代碼不能同時存在,否則數據會進行兩次運算哦):
          來,我們試試把++和–寫到前面

          ++num2; // num2自增1
          --num4; // num4自減1
          public class Test{
             public static void main(String[] args) {
                 int num1 = 3;
                 int num2 = 4;
                 int num3 = 5;
                 int num4 = 10;
                 int remainder = num3 % num1; // 取模/取余運算,5對3取模,結果是?
                 System.out.println(remainder); // 輸出取模運算結果
                 // num2++; // num2自增1
          // num4--; // num4自減1
          ++num2; // num2自增1
          --num4; // num4自減1
                 System.out.println(num2); // 輸出自增之后的運算結果
                 System.out.println(num4); // 輸出自減之后的運算結果
            }
          }

          輸出結果沒有變化:

          5
          9

          當然,加加(++)和減減(–)也可以像別的運算符那樣,把結果賦值給一個新的變量,就像這樣:

          public class Test{
             public static void main(String[] args) {
                 int num1 = 3;
                 int num2 = 4;
                 int num3 = 5;
                 int num4 = 10;
                 int num5 = num2++; // 猜想:num2自增1,然后賦值給新變量num5
          int num6 = num4--; // 猜想:num4自減1,然后賦值給新變量num6
          System.out.println(num5); // 輸出自增之后的運算結果
          System.out.println(num6); // 輸出自減之后的運算結果
            }
          }

          輸出結果:

          4
          10

          怎么還是原來的值?難道是沒有發生運算?

          看來我們的猜想不正確,原來

          int num5 = num2++; // 結論:num2先賦值給新變量num5,然后才進行自增運算
          int num6 = num4--; // 結論:num4先賦值給新變量num6,然后才進行自減運算

          我把加加(++)和減減(–)放到變量前面試試:

          public class Test{
             public static void main(String[] args) {
                 int num1 = 3;
                 int num2 = 4;
                 int num3 = 5;
                 int num4 = 10;
          // int num5 = num2++; // 結論:num2先賦值給新變量num5,然后才進行自增運算
          // int num6 = num4--; // 結論:num4先賦值給新變量num6,然后才進行自減運算
          int num5 = ++num2; // 猜想:num2自增1,然后賦值給新變量num5
          int num6 = --num4; // 猜想:num4自減1,然后賦值給新變量num6
                 System.out.println(num5); // 輸出自增之后的運算結果
                 System.out.println(num6); // 輸出自減之后的運算結果
            }
          }

          輸出結果:

          5
          9

          終于變成正確答案了:

          int num5 = ++num2; // 結論:num2自增1,然后賦值給新變量num5
          int num6 = --num4; // 結論:num4自減1,然后賦值給新變量num6

          但是,這是為什么呢?加加(++)和減減(–)放到變量前和放到變量后為什么結果不一樣,到底數據有沒有進行運算呢?剖析一下這兩招:

          單獨使用:放在變量前或后結果一樣

          參與其它運算:

          在變量前,先自增(自減) ,再進行其它運算

          在變量后,先以原值進行其它運算,再自增(自減)

          所以,第一次把 ++ 和 — 放在變量后,是把變量原來的值賦值給新變量,而自增(或自減)的值被拋棄了,因此打印的是原來的值;第二次把 ++ 和 — 放在變量前,是把運算之后的值賦值給新變量,因此打印的是計算之后的數據,這就是加加(++)和減減(–)這兩個運算符的底層原理。 ++ 和 — 是一種特殊的運算,這是再一次不同于我們以往認知的一個地方。