官术网_书友最值得收藏!

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
主站蜘蛛池模板: 舟山市| 长汀县| 麻城市| 图木舒克市| 江都市| 志丹县| 虞城县| 鄯善县| 延寿县| 浠水县| 连平县| 肃宁县| 信宜市| 延川县| 石台县| 长垣县| 砚山县| 获嘉县| 乳山市| 米脂县| 西城区| 西城区| 于田县| 剑阁县| 乐业县| 潮安县| 贵溪市| 灯塔市| 镇平县| 化德县| 阿合奇县| 泽库县| 本溪市| 班戈县| 英山县| 望都县| 大庆市| 金湖县| 宜良县| 息烽县| 杨浦区|