你好!今天我們來探討一個很重要的話題,即Java中的數值運算符。
在編程中,數字無處不在。如果你深入研究並記得高中,你可能還記得計算機以數字格式表示所有信息:零和一的組合,也稱為二進制代碼。
編程中有很多數字運算符,因此我們將使用示例來探索其中最重要的運算符 :) 讓我們從最簡單的開始:算術運算符。這些是眾所周知的加法 (


+
)、減法 ( -
)、乘法 ( *
) 和除法 ( /
) 運算符。
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
控制台輸出: 1032 966 32967 30 這些你都已經用過了。對於這個組,您可以添加餘數或模 ( %
) 運算符。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
控制台輸出: 1 在此示例中,我們將 33 除以 2。結果為 16,帶有一個不能被 2 整除的額外“尾巴”(一)。此“尾巴”是“除法餘數”運算的結果。Java 還實現了比較/關係運算符(就像在數學中一樣)。他們可能在學校也很熟悉:
- 等於 (
==
) - 大於 (
>
) - 小於 (
<
) - 大於或等於 (
>=
) - 小於或等於 (
<=
) - 不等於 (
!=
)
==
,而不是=
。 在 Java 中,single=
是賦值運算符,當一個變量被賦值一個數字、字符串或另一個變量的值 時使用它。

public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// We expect false to be displayed
}
}
控制台輸出: 999 糟糕!這顯然不是我們預期的結果。這是一種完全不同的數據類型:我們希望看到一個布爾值,但我們得到了一個數字。都是因為我們在括號中使用了賦值運算符而不是比較運算符。 x=y
(999)的值y
賦給了變量x
,然後我們顯示了 的值x
。這是正確的方法:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
控制台輸出: false 現在我們已經正確比較了兩個數字!:) 這是賦值運算符 ( =
) 的另一個特性:它可以“鏈接”在一起:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
控制台輸出: 256 記住分配是從右到左。該表達式 ( x = y = z
) 將分步執行:
y = z
, 那是,y = 256
x = y
, 那是,x = 256
一元運算符。
它們被稱為“ unary ”,來自“ uno ”這個詞,意思是“一個”。他們之所以得到這個名字,是因為與以前的運算符不同,它們作用於單個數字,而不是多個。這些包括:-
一元減號。它翻轉數字的符號。
public class Main {
public static void main(String[] args) {
int x = 999;
// Change the sign for the first time
x = -x;
System.out.println(x);
// Change the sign for the second time
x= -x;
System.out.println(x);
}
}
控制台輸出: -999 999 我們使用了兩次一元減號運算符。結果我們的數先是負數,然後又變成正數了!
- 遞增 (++) 和遞減 (--)
++
符將數字增加 1,並且--
運算符將數字減少相同的數量。
public class Main {
public static void main(String[] args) {
int x = 999;
x++;
System.out.println(x);
x--;
System.out.println(x);
}
}
控制台輸出: 1000 999 如果您聽說過 C++ 語言,您可能會熟悉這種表示法。它的創建者用這個有趣的名字來傳達“C++ 是 C 語言的擴展”的想法 有兩種類型的遞增和遞減運算符:postfix和prefix。 x++
- 後綴 ++x
- 前綴 將加號/減號放在數字之前或之後的根本區別是什麼?我們將在以下示例中看到:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
控制台輸出: 999 不對勁!我們想增加x
1 並將新值分配給變量 y。換句話說,y 應該是 1000。但我們卻得到了其他東西:999。似乎 x 沒有增加並且增量運算符不起作用?但它確實奏效了。為了說服自己,請嘗試x
在最後展示 :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
控制台輸出: 999 1000 事實上,這正是這個操作被稱為後綴的原因:它在主表達式之後執行。這意味著,在我們的例子中: int y = x++;
y = x
首先執行(變量y
將被初始化為 的值x
),然後才 x++
執行 如果這不是我們想要的行為怎麼辦?然後我們需要使用前綴表示法:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
在這種情況下,++x
首先處理,然後才處理y = x
;執行。 您應該立即將此差異記入內存,以避免在實際程序中犯錯誤,在實際程序中使用後綴而不是前綴可能會顛倒一切:)
複合運算符
此外,Java中還有所謂的複合運算符。它們結合了兩個運算符:- 任務
- 算術運算符
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
控制台輸出: 1032 x += y
表示x = x + y
. 為簡潔起見,連續使用這兩個符號。組合-=
、*=
和/=
以%=
類似的方式工作。
邏輯運算符
除了數字運算符之外,Java 還具有涉及布爾值(true和false)的運算。這些操作是使用邏輯運算符執行的!
- 邏輯非。它翻轉布爾值
public class Main {
public static void main(String[] args) {
boolean x = true;
System.out.println(!x);
}
}
控制台輸出: 假
&&
- 邏輯與。只有當兩個操作數都為真時,它才返回真。
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 && 100 > 200);
System.out.println(100 > 50 && 100 >= 100);
}
}
控制台輸出: false true 第一次運算結果為false,因為其中一個操作數為false,即100 > 200
. 要返回 true,&&
運算符要求兩個操作數都為 true(如第二行中的情況)。
||
- 邏輯或。當至少一個操作數為真時,它返回真。
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 || 100 > 200);
}
}
控制台輸出: true 表達式100 > 200
仍然為 false,但對於OR運算符來說,第一部分 ( 100 > 10
) 為 true 就完全足夠了。
GO TO FULL VERSION