Java學習之算術運算符

Java 中的算術運算符主要用來組織數值類型數據的算術運算,按照參加運算的操作數的不同可以分爲一元運算符和二元運算符。

一元運算符

一元運算一共有 3 個:

運 算符 名 稱 說 明 例 子
- 取反符號 取反運算 b=-a
++ 自加一 先取值再加一,或先加一再取值 a++ 或 ++a
-- 自減一 先取值再減一,或先減一再取值 a-- 或 --a

例子說明:

  • -a 是對 a 取反運算
  • a++ 或 a-- 是在表達式運算完後,再給 a 加一或減一
  • ++a 或 --a 是先給 a 加一或減一,然後再進行表達式運算

代碼:

int a = 12;
System.out.println(-a);
int b = a++;
System.out.println(b);
b = ++a;
System.out.println(b);

代碼解釋:
第 2 行是 -a,是把 a 變量取反,結果輸出是 -12。
第 4 行代碼是先把 a 賦值給 b 變量,a再加一,即先賦值後 ++,因此輸出結果是 12,而a此時因爲+1了所以值爲13。
第 6 行代碼是把 a 加一,然後把 a 賦值給 b 變量,即先 ++ 後賦值,因此輸出結果是 14。

運行結果:



二元運算符

算術運算符的功能是進行算術運算,除了經常使用的加(+)、減(-)、乘(*)和除(\)外,還有取模運算(%)。

加(+)、減(-)、乘(*)、除(\)和我們平常接觸的數學運算具有相同的含義。

運 算 符 名 稱 說 明 例 子
+ 求 a 加 b 的和,還可用於 String 類型,進行字符串連接操作 a + b
- 求 a 減 b 的差 a - b
* 求 a 乘以 b 的積 a * b
/ 求 a 除以 b 的商 a / b
% 取餘 求 a 除以 b 的餘數 a % b

二元算術運算符都是雙目運算符,即連接兩個操作數的運算符。

優先級上,*、/、% 具有相同運算級別,並高於 +、-(+、- 具有相同級別)。

代碼展示:

int a = 4, b = 2, c = 3;
int d = a * (b + c) % c;

運算規則與數學運算中的規則是相同的。

首先計算賦值符號(=)右邊配對的括號內的值,其次按從左向右的結合方向計算乘法,最後做求餘運算,表達式的結果爲 2, 然後把 2 賦值給 d。

舉例:

  1. int x=2,y=1;
    表達式 y/x 的結果是 0。(int是整數,去掉小數部分)
  2. float x=2.0f; int y=1;
    表達式 y/x 的結果是 0.5。

在(1)中整型變量 x 和 y 相除,其結果仍爲整型數據 0;在(2)中由於兩個不同類型的數據進行運算,此時首先要進行類型轉換,會把 int 型的 y 轉換成與 x 一樣的 float 型,然後相除,最終結果爲 float 類型的數字 0.5。


代碼練習

編寫一個程序,輸出不同類型的兩個數,執行相加、相減、相乘、相除和求餘後輸入結果。

public static void main(String[] args) {
    float f1 = 9 % 4;// 保存取餘後浮點類型的結果
    double da = 9 + 4.5; // 雙精度加法
    double db = 9 - 3.0; // 雙精度減法
    double dc = 9 * 2.5; // 雙精度乘法
    double dd = 9 / 3.0; // 雙精度除法
    double de = 9 % 4; // 雙精度取餘
    System.out.println("整數的算術運算"); // 整數的加、減、乘、除和取餘
    System.out.printf("9+4=%d \n", 9 + 4);
    System.out.printf("9-4=%d \n", 9 - 4);
    System.out.printf("9*4=%d \n", 9 * 4);
    System.out.printf("9/4=%d \n", 9 / 4);
    System.out.printf("9%%4=%d \n", 9 % 4);
    System.out.println("\n浮點數的算術運算"); // 浮點數的加、減、乘、除和取餘
    System.out.printf("9+4.5f=%f \n", 9 + 4.5f);
    System.out.printf("9-3.0f=%f \n", 9 - 3.0f);
    System.out.printf("9*2.5f=%f \n", 9 * 2.5f);
    System.out.printf("9/3.0f=%f \n", 9 / 3.0f);
    System.out.printf("9%%4=%f \n", f1);
    System.out.println("\n雙精度數的算術運算"); // 雙精度數的加、減、乘、除和取餘
    System.out.printf("9+4.5=%4.16f \n", da);
    System.out.printf("9-3.0=%4.16f \n", db);
    System.out.printf("9*2.5=%4.16f \n", dc);
    System.out.printf("9/3.0=%4.16f \n", dd);
    System.out.printf("9%%4=%4.16f \n", de);
    System.out.println("\n字符的算術運算"); // 對字符的加法和減法
    System.out.printf("'A'+32=%d \n", 'A' + 32);
    System.out.printf("'A'+32=%c \n", 'A' + 32);
    System.out.printf("'a'-'B'=%d \n", 'a' - 'B');
}

執行結果:

整數的算術運算
9+4=13
9-4=5
9*4=36
9/4=2
9%4=1

浮點數的算術運算
9+4.5f=13.500000
9-3.0f=6.000000
9*2.5f=22.500000
9/3.0f=3.000000
9%4=1.000000

雙精度數的算術運算
9+4.5=13.5000000000000000
9-3.0=6.0000000000000000
9*2.5=22.5000000000000000
9/3.0=3.0000000000000000
9%4=1.0000000000000000

字符的算術運算
'A'+32=97
'A'+32=a
'a'-'B'=31

代碼中使用了 4 種類型來執行算術運算。

整數類型的結果最容易理解,浮點型和雙精度型返回的結果都帶有小數,

字符型將會把字符轉換爲 ASCII 碼再運算。

從輸出結果中可以看到,整數之間的運算結果只保留整數部分,浮點型運算時保留 6 位小數部分,雙精度運算時則保留 16 位小數部分。

注意:Java 語言算術運算符的優先級是先乘除後加減。例如在表達式“a-bc”中,b 的左側爲減號,右側爲乘號,而乘號優先級高於減號,因此該表達式可以轉換爲“a-(bc)”

如果在一個表達式中的多個算術運算符的優先級別相同,例如“a-b+c”,此時將按照運算符的結合方向決定順序。算術運算符的結合方向都是“從左至右”,即先左後右。因此 b 先與減號結合,執行“a-b”的運算,再執行加 c 的運算。

算術賦值運算符

算術賦值運算符只是一種簡寫,一般用於變量自身的變化,

運 算 符 名 稱 例 子
+= 加賦值 a += b、a += b+3
-= 減賦值 a -= b
*= 乘賦值 a *= b
/= 除賦值 a /= b
%= 取餘賦值 a %= b

代碼示例:

int a = 1;
int b = 2;
a += b; // 相當於 a = a + b
System.out.println(a);
a += b + 3; // 相當於 a = a + b + 3
System.out.println(a);
a -= b; // 相當於 a = a - b
System.out.println(a);
a *= b; // 相當於 a=a*b
System.out.println(a);
a /= b; // 相當於 a=a/b
System.out.println(a);
a %= b; // 相當於 a=a%b
System.out.println(a);

運行結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章