Java 提供了豐富的運(yùn)算符環(huán)境。Java 有4大類(lèi)運(yùn)算符:算術(shù)運(yùn)算、位運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算。Java 還定義了一些附加的運(yùn)算符用于處理特殊情況。本章將描述Java 所有的運(yùn)算符,而比較運(yùn)算符instanceof 將在第12章討論。
注意:如果你對(duì)C/C++ 熟悉,你將會(huì)高興,因?yàn)镴ava 的絕大多數(shù)運(yùn)算符和C/C++ 中的用法一樣。但有一些微妙的差別,所以提醒你要仔細(xì)閱讀。
算術(shù)運(yùn)算符用在數(shù)學(xué)表達(dá)式中,其用法和功能與代數(shù)學(xué)(或其他計(jì)算機(jī)語(yǔ)言)中一樣,Java 定義了下列算術(shù)運(yùn)算符(見(jiàn)表4-1):
運(yùn)算符含義
+ 加法
– 減法(一元減號(hào))
*
乘法/ 除法% 模運(yùn)算++ 遞增運(yùn)算+= 加法賦值–= 減法賦值
*=
乘法賦值/= 除法賦值%= 模運(yùn)算賦值--遞減運(yùn)算
算術(shù)運(yùn)算符的運(yùn)算數(shù)必須是數(shù)字類(lèi)型。算術(shù)運(yùn)算符不能用在布爾類(lèi)型上,但是可以用在char類(lèi)型上,因?yàn)閷?shí)質(zhì)上在Java 中,char類(lèi)型是int 類(lèi)型的一個(gè)子集。
4.1.1 基本算術(shù)運(yùn)算符
基本算術(shù)運(yùn)算符——加、減、乘、除可以對(duì)所有的數(shù)字類(lèi)型操作。減運(yùn)算也用作表示單個(gè)操作數(shù)的負(fù)號(hào)。記住對(duì)整數(shù)進(jìn)行“/”除法運(yùn)算時(shí),所有的余數(shù)都要被舍去。下面這個(gè)簡(jiǎn)單例子示范了算術(shù)運(yùn)算符,也說(shuō)明了浮點(diǎn)型除法和整型除法之間的差別。
// Demonstrate the basic arithmetic operators.
class BasicMath {
public static void main(String args[]) {
// arithmetic using integers
System.out.println("Integer Arithmetic");
int a = 1 + 1;
int b = a * 3;
int c = b / 4;
int d = c - a;
int e = -d;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("e = " + e);
// arithmetic using doubles
System.out.println("\nFloating Point Arithmetic");
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;
double dd = dc - a;
double de = -dd;
System.out.println("da = " + da);
System.out.println("db = " + db);
System.out.println("dc = " + dc);
System.out.println("dd = " + dd);
System.out.println("de = " + de);
}
}
當(dāng)你運(yùn)行這個(gè)程序,你會(huì)看到輸出如下:
Integer Arithmetic
a = 2
b = 6
c = 1
d = -1
e = 1
Floating Point Arithmetic
da = 2.0
db = 6.0
dc = 1.5
dd = -0.5
de = 0.5
4.1.2 模運(yùn)算符
模運(yùn)算符%,其運(yùn)算結(jié)果是整數(shù)除法的余數(shù)。它能像整數(shù)類(lèi)型一樣被用于浮點(diǎn)類(lèi)型(這不同于C/C++ ,在C/C++ 中模運(yùn)算符%僅僅能用于整數(shù)類(lèi)型)。下面的示例程序說(shuō)明了模運(yùn)算符%的用法:
class Modulus {
public static void main(String args[]) {
int x = 42;
double y = 42.25;
System.out.println("x mod 10 = " + x % 10);
System.out.println("y mod 10 = " + y % 10);
}
}
當(dāng)你運(yùn)行這個(gè)程序,你會(huì)看到輸出如下:
x mod 10 = 2
y mod 10 = 2.25
4.1.3 算術(shù)賦值運(yùn)算符
Java 提供特殊的算術(shù)賦值運(yùn)算符,該運(yùn)算符可用來(lái)將算術(shù)運(yùn)算符與賦值結(jié)合起來(lái)。你可能知道,像下列這樣的語(yǔ)句在編程中是很常見(jiàn)的:
a = a +4;
在Java 中,你可將該語(yǔ)句重寫(xiě)如下:
a += 4;
該語(yǔ)句使用“+=”進(jìn)行賦值操作。上面兩行語(yǔ)句完成的功能是一樣的:使變量a的值增加4 。下面是另一個(gè)例子:
a = a % 2;
該語(yǔ)句可簡(jiǎn)寫(xiě)為:
a %= 2;
在本例中,%=算術(shù)運(yùn)算符的結(jié)果是a/2的余數(shù),并把結(jié)果重新賦給變量a。這種簡(jiǎn)寫(xiě)形式對(duì)于Java 的二元(即需要兩個(gè)操作數(shù)的)運(yùn)算符都適用。其語(yǔ)句格式為:
var= var op expression;
可以被重寫(xiě)為:
var op= expression;
這種賦值運(yùn)算符有兩個(gè)好處。第一,它們比標(biāo)準(zhǔn)的等式要緊湊。第二,它們有助于提高Java 的運(yùn)行效率。由于這些原因,在Java 的專(zhuān)業(yè)程序中,你經(jīng)常會(huì)看見(jiàn)這些簡(jiǎn)寫(xiě)的賦值運(yùn)算符。
注意:如果你對(duì)C/C++ 熟悉,你將會(huì)高興,因?yàn)镴ava 的絕大多數(shù)運(yùn)算符和C/C++ 中的用法一樣。但有一些微妙的差別,所以提醒你要仔細(xì)閱讀。
算術(shù)運(yùn)算符用在數(shù)學(xué)表達(dá)式中,其用法和功能與代數(shù)學(xué)(或其他計(jì)算機(jī)語(yǔ)言)中一樣,Java 定義了下列算術(shù)運(yùn)算符(見(jiàn)表4-1):
運(yùn)算符含義
+ 加法
– 減法(一元減號(hào))
*
乘法/ 除法% 模運(yùn)算++ 遞增運(yùn)算+= 加法賦值–= 減法賦值
*=
乘法賦值/= 除法賦值%= 模運(yùn)算賦值--遞減運(yùn)算
算術(shù)運(yùn)算符的運(yùn)算數(shù)必須是數(shù)字類(lèi)型。算術(shù)運(yùn)算符不能用在布爾類(lèi)型上,但是可以用在char類(lèi)型上,因?yàn)閷?shí)質(zhì)上在Java 中,char類(lèi)型是int 類(lèi)型的一個(gè)子集。
4.1.1 基本算術(shù)運(yùn)算符
基本算術(shù)運(yùn)算符——加、減、乘、除可以對(duì)所有的數(shù)字類(lèi)型操作。減運(yùn)算也用作表示單個(gè)操作數(shù)的負(fù)號(hào)。記住對(duì)整數(shù)進(jìn)行“/”除法運(yùn)算時(shí),所有的余數(shù)都要被舍去。下面這個(gè)簡(jiǎn)單例子示范了算術(shù)運(yùn)算符,也說(shuō)明了浮點(diǎn)型除法和整型除法之間的差別。
// Demonstrate the basic arithmetic operators.
class BasicMath {
public static void main(String args[]) {
// arithmetic using integers
System.out.println("Integer Arithmetic");
int a = 1 + 1;
int b = a * 3;
int c = b / 4;
int d = c - a;
int e = -d;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("e = " + e);
// arithmetic using doubles
System.out.println("\nFloating Point Arithmetic");
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;
double dd = dc - a;
double de = -dd;
System.out.println("da = " + da);
System.out.println("db = " + db);
System.out.println("dc = " + dc);
System.out.println("dd = " + dd);
System.out.println("de = " + de);
}
}
當(dāng)你運(yùn)行這個(gè)程序,你會(huì)看到輸出如下:
Integer Arithmetic
a = 2
b = 6
c = 1
d = -1
e = 1
Floating Point Arithmetic
da = 2.0
db = 6.0
dc = 1.5
dd = -0.5
de = 0.5
4.1.2 模運(yùn)算符
模運(yùn)算符%,其運(yùn)算結(jié)果是整數(shù)除法的余數(shù)。它能像整數(shù)類(lèi)型一樣被用于浮點(diǎn)類(lèi)型(這不同于C/C++ ,在C/C++ 中模運(yùn)算符%僅僅能用于整數(shù)類(lèi)型)。下面的示例程序說(shuō)明了模運(yùn)算符%的用法:
class Modulus {
public static void main(String args[]) {
int x = 42;
double y = 42.25;
System.out.println("x mod 10 = " + x % 10);
System.out.println("y mod 10 = " + y % 10);
}
}
當(dāng)你運(yùn)行這個(gè)程序,你會(huì)看到輸出如下:
x mod 10 = 2
y mod 10 = 2.25
4.1.3 算術(shù)賦值運(yùn)算符
Java 提供特殊的算術(shù)賦值運(yùn)算符,該運(yùn)算符可用來(lái)將算術(shù)運(yùn)算符與賦值結(jié)合起來(lái)。你可能知道,像下列這樣的語(yǔ)句在編程中是很常見(jiàn)的:
a = a +4;
在Java 中,你可將該語(yǔ)句重寫(xiě)如下:
a += 4;
該語(yǔ)句使用“+=”進(jìn)行賦值操作。上面兩行語(yǔ)句完成的功能是一樣的:使變量a的值增加4 。下面是另一個(gè)例子:
a = a % 2;
該語(yǔ)句可簡(jiǎn)寫(xiě)為:
a %= 2;
在本例中,%=算術(shù)運(yùn)算符的結(jié)果是a/2的余數(shù),并把結(jié)果重新賦給變量a。這種簡(jiǎn)寫(xiě)形式對(duì)于Java 的二元(即需要兩個(gè)操作數(shù)的)運(yùn)算符都適用。其語(yǔ)句格式為:
var= var op expression;
可以被重寫(xiě)為:
var op= expression;
這種賦值運(yùn)算符有兩個(gè)好處。第一,它們比標(biāo)準(zhǔn)的等式要緊湊。第二,它們有助于提高Java 的運(yùn)行效率。由于這些原因,在Java 的專(zhuān)業(yè)程序中,你經(jīng)常會(huì)看見(jiàn)這些簡(jiǎn)寫(xiě)的賦值運(yùn)算符。