天天看點

《Java從小白到大牛精簡版》之第6章 運算符(上)

《Java從小白到大牛》紙質版已經上架了!!!

《Java從小白到大牛精簡版》之第6章 運算符(上)

Java語言中的運算符(也稱操作符)在風格和功能上都與C 和C++極為相似。本章為大家介紹Java語言中一些主要的運算符,包括算術運算符、關系運算符、邏輯運算符、位運算符和其他運算符。

6.1 算術運算符

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

6.1.1 一進制運算符

算術一進制運算一共有3個,分别是-、++和–。具體說明參見表6-1。

表6-1一進制算術運算

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

表6-1中,-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);      

輸出結果如下:

-12
12
14      

上述代碼第①行是-a,是把a變量取反,結果輸出是-12。第②行代碼是先把a指派給b變量再加一,即先指派後++,是以輸出結果是12。第③行代碼是把a加一,然後把a指派給b變量,即先++後指派,是以輸出結果是14。

6.1.2 二進制運算符

二進制運算符包括:+、-、*、/和%,這些運算符對數值類型資料都有效,具體說明參見表6-2。

表6-2二進制算術運算

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

示例代碼如下:

//聲明一個字元類型變量
char charNum = 'A';     
// 聲明一個整數類型變量
int intResult = charNum + 1;            ①
System.out.println(intResult);

intResult = intResult - 1;
System.out.println(intResult);

intResult = intResult * 2;
System.out.println(intResult);

intResult = intResult / 2;
System.out.println(intResult);

intResult = intResult + 8;
intResult = intResult % 7;
System.out.println(intResult);

System.out.println("-------");

// 聲明一個浮點型變量
double doubleResult = 10.0;
System.out.println(doubleResult);

doubleResult = doubleResult - 1;
System.out.println(doubleResult);

doubleResult = doubleResult * 2;
System.out.println(doubleResult);

doubleResult = doubleResult / 2;
System.out.println(doubleResult);

doubleResult = doubleResult + 8;
doubleResult = doubleResult % 7;
System.out.println(doubleResult);      

輸出結果如下:

66
65
130
65
3
-------
10.0
9.0
18.0
9.0
3.0      

上述例子中分别對數值類型資料進行了二進制運算,其中代碼第①行将字元類型變量charNum與整數類型進行加法運算,參與運算的該字元('A')的Unicode編碼65。其他代碼比較簡單不再贅述。

6.1.3 算術指派運算符

算術指派運算符隻是一種簡寫,一般用于變量自身的變化,具體說明參見表6-3。

表6-3 算術指派符

運 算 符 名  稱 例  子
+= 加指派 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);      

輸出結果如下:

3
8
6
12
6
0      

上述例子分别對整型進行了+=、-=、*=、/=和%=運算,具體語句不再贅述。

6.2 關系運算符

關系運算是比較兩個表達式大小關系的運算,它的結果是布爾類型資料,即true或false。關系運算符有6種:==、!=、>、<、>=和<=,具體說明參見表6-4。

表6-4 關系運算符

**提示 ==和!=可以應用于基本資料類型和引用類型。當用于引用類型比較時,比較的是兩個引用是否指向同一個對象,但當時實際開發過程多數情況下,隻是比較對象的内容是否相當,不需要比較是否為同一個對象。

**

示例代碼如下:

int value1 = 1;
int value2 = 2;

if (value1 == value2) {
    System.out.println("value1 == value2");
}

if (value1 != value2) {
    System.out.println("value1 != value2");
}

if (value1 > value2) {
    System.out.println("value1 > value2");
}

if (value1 < value2) {
    System.out.println("value1 < value2");
}

if (value1 <= value2) {
    System.out.println("value1 <= value2");
}      

運作程式輸出結果如下:

value1 != value2
value1 < value2
value1 <= value2      

6.3 邏輯運算符

邏輯運算符是對布爾型變量進行運算,其結果也是布爾型,具體說明參見表6-5。

表6-5 邏輯運算符

提示 短路與(&&)和短路或(||)能夠采用最優化的計算方式,進而提高效率。在實際程式設計時,應該優先考慮使用短路與和短路或。

示例代碼如下:

int i = 0;
int a = 10;
int b = 9;

if ((a > b) || (i == 1)) {                          ①
    System.out.println("或運算為 真");
} else {
    System.out.println("或運算為 假");
}

if ((a < b) && (i == 1)) {                      ②
    System.out.println("與運算為 真");
} else {
    System.out.println("與運算為 假");
}

if ((a > b) || (a++ == --b)) {                  ③
    System.out.println("a = " + a);
    System.out.println("b = " + b);
}      

上述代碼運作輸出結果如下:

或運算為 真
與運算為 假      

其中,第①行代碼進行短路計算,由于(a > b)是true,後面的表達式(i == 1)不再計算,輸出的結果為真。類似地,第②行代碼也進行短路計算,由于(a < b)是false,後面的表達式(i == 1)不再計算,輸出的結果為假。

配套視訊