2.2 運算符
如果你具有其他語言(比如C語言)的編程經(jīng)驗,對于表2-2所總結(jié)的Java運算符的優(yōu)先級應(yīng)該并不陌生。所有的編程語言都有類似的運算符以支持運算。
表2-2 運算符優(yōu)先級

在表2-2中,靠近表頂部的運算符優(yōu)先級最高。具有較高優(yōu)先級的運算符在相對較低的優(yōu)先級的運算符之前被評估。在同一行上的運算符具有相同的優(yōu)先級。當(dāng)在相同的表達式中出現(xiàn)相同優(yōu)先級的運算符時,必須首先對該規(guī)則進行評估。除了賦值運算符外,所有二進制運算符進行評估時都是從左到右,賦值操作符都是從右到左。
2.2.1 賦值運算符
最常用和最簡單的運算符就是賦值運算符=,用法如下:
int cadence = 0; int speed = 0; int gear = 1;
該運算符也用于對象的引用關(guān)聯(lián)。
2.2.2 算術(shù)運算符
算術(shù)運算符如表2-3所示。
表2-3 算術(shù)運算符

以下是算術(shù)運算符的一些示例:

輸出為:
1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4 / 2 = 2 2 + 8 = 10 10 % 7 = 3
需要注意的是,“+”除了用于算術(shù)運算外,還可以用于字符串連接。以下是一個字符串連接的例子:

輸出為:
Hello World!
2.2.3 一元運算符
一元運算符只需要一個操作數(shù),如表2-4所示。
表2-4 一元運算符

下面是一元運算符的一些示例:

輸出:
1 0 1 -1 false true
遞增和遞減運算符可以在操作數(shù)之前或者之后使用,比如i++和++i。兩者的唯一區(qū)別是,如果遞增或遞減運算符放在其運算數(shù)前面(比如++i),Java就會在獲得該運算數(shù)的值之前執(zhí)行相應(yīng)的操作,并將其用于表達式的其他部分;如果運算符放在其運算數(shù)后面(i++),Java就會先獲得該操作數(shù)的值再進行遞增或遞減運算。具體的可以看下面的示例:

輸出:
4 5 6 6 7
2.2.4 等價和關(guān)系運算符
等價和關(guān)系運算符如表2-5所示。
表2-5 等價和關(guān)系運算符

等價和關(guān)系運算符的例子如下:

輸出為:
value1 != value2 value1 < value2 value1 <= value2
2.2.5 條件運算符
條件運算符如表2-6所示。
表2-6 條件運算符

以下是條件與、條件或的運算符的例子:

輸出:
value1 is 1 AND value2 is 2 value1 is 1 OR value2 is 1
下面是一個三元運算符的例子,類似于if-then-else語句:

輸出:
1
2.2.6 instanceof運算符
instanceof用于匹配判斷對象的類型,可以用來測試對象是否是類的一個實例、子類的實例或者是實現(xiàn)了一個特定接口的類的實例。
在下面的例子中,父類是Parent,接口是MyInterface,子類是Child繼承了父類并實現(xiàn)了接口。

注意
Parent、Child及MyInterface是定義在InstanceofDemo類中的,這樣的類和接口被稱為內(nèi)部類和內(nèi)部接口。
輸出為:
obj1 instanceof Parent: true obj1 instanceof Child: false obj1 instanceof MyInterface: false obj2 instanceof Parent: true obj2 instanceof Child: true obj2 instanceof MyInterface: true
注意
null不是任何類的實例。
2.2.7 位運算符和位移運算符
位運算符和位移運算符適用于整型。
1.位運算符
表2-7總結(jié)了所有的位運算符。
表2-7 位運算符

以下是位運算符使用的例子:

輸出為:
2
2.位移運算符
首先闡述一下符號位的概念:
· 符號位是數(shù)的最后一位,不是用來計算的。
· 當(dāng)符號位為0時,值為正數(shù);當(dāng)符號位為1時,值為負(fù)數(shù)。
· 無符號位時為正數(shù),有符號位時為正數(shù)或者負(fù)數(shù)。
表2-8總結(jié)了所有的位移運算符。
表2-8 位移運算符

其中:
· 左移運算和右移運算移動后都會保留符號位!
· 右移(補零)移動后不保留符號位,永遠(yuǎn)為正數(shù),因為其符號位總是被補零。
以下是位移運算符的例子:

輸出為:
-101<<1=-202 -101<<2=-404 -101<<3=-808 -101<<4=-1616 -101<<5=-3232 -101<<6=-6464 -101<<7=-12928 -101<<8=-25856 -101<<9=-51712 -101<<10=-103424 -101<<11=-206848 -101<<12=-413696 -101<<13=-827392 -101<<14=-1654784 -101<<15=-3309568 -101<<16=-6619136 -101<<17=-13238272 -101<<18=-26476544 -101<<19=-52953088 -101<<20=-105906176 -101<<21=-211812352 -101<<22=-423624704 -101<<23=-847249408 -101<<24=-1694498816 -101<<25=905969664 -101<<26=1811939328 -101<<27=-671088640 -101<<28=-1342177280 -101<<29=1610612736 -101<<30=-1073741824 -101<<31=-2147483648 -101<<32=-101
- Animate CC二維動畫設(shè)計與制作(微課版)
- 從0到1:HTML+CSS快速上手
- 程序員考試案例梳理、真題透解與強化訓(xùn)練
- Hands-On C++ Game Animation Programming
- Elasticsearch Server(Third Edition)
- ASP.NET程序開發(fā)范例寶典
- 21天學(xué)通C++(第5版)
- Azure Serverless Computing Cookbook
- Xamarin Blueprints
- PyQt編程快速上手
- Docker:容器與容器云(第2版)
- TypeScript全棧開發(fā)
- Python數(shù)據(jù)預(yù)處理技術(shù)與實踐
- C#網(wǎng)絡(luò)編程高級篇之網(wǎng)頁游戲輔助程序設(shè)計
- C# 7 and .NET Core 2.0 Blueprints