Java基礎--4運算符

自增運算符和自減運算符

  因爲運算符改變了變量的值,所以它的操作數不能是數值。例如,4++就是一條非法語句。

int m =7;
int n = 7;
int a = 2 * ++m;    // now a is 16, m is 8
int b = 2 * n++;        // now b is 14, n is 8

  建議不要在其他表達式的內部使用++,這樣編寫很容易令人困惑,並也很容易會產生bug。

關係運算符與boolean運算符

  &&和||是按照“短路”的方式來求值的。如果第一個操作數已經能夠確定表達式的值,那麼就不必再計算第二個操作數了。這樣的方法不僅稍微加快了運行速度,同時也可以避免一些錯誤的發生。例如:

(x != 0) && (1 / x > x + y) //no division by 0

  當x爲0時,不會計算第二部分。如果x爲0,1/x不會被計算,就不會出現除以0的錯誤。

重難點:位運算符

  位運算符不按“短路”方法來運算。在得到結果之前,一定要計算兩個操作數的值。

  (^)     邏輯異或          二進制同位對比,不同時結果才爲1
  (~)     邏輯非          1變0,0變1
  (<<)    左移           二進制有效位全部向左移制定位數
  (>>)    右移           二進制有效位全部向右移制定位數
  (>>>)   按位右移補零操作符     二進制有效位全部向右移指定位數,同時即使無效位也要用0補上。

warning:對移位運算符右側的參數需要進行模32的運算(如果左邊操作數是long類型,那麼要對右側操作數模64)。例如,1 << 35 與 1 << 3 或 8 是相同的

數學函數與常量

  Math類,包含各種各樣的數學函數。
  想要計算一個數值的平方根,可以使用sqrt方法:
  double y = Math.sqrt(4);

  在Java中,沒有冪運算,因此要用到Math的pow方法:
  double y = Math.pow(x, a);
  y的值爲x的a次冪(x^a)

  Math類提供了一些常用的三角函數:
  Math.sin
  Math.cos
  Math.tan
  Math.atan
  Math.atan2

  還有指數函數以及它的反函數——自然對數以及以10爲底的對數:
  Math.exp
  Math.log
  Math.log10

  還提供了兩個用於表示π和е常量的近似值:
  Math.PI
  Math.E

  不必在數學方法名和常量名前添加前綴“Math.”,只要在源文件的頂部加上下面的這段代碼就可以了:

import static java.lang.Math.*;


數值類型之間的轉換

數值類型之間的轉換
  在上圖,藍色箭頭表示沒有信息的丟失;而三個紫色粗線的箭頭,表示有可能有精度損失的轉換。例如:

int n = 123456789;
float f = n;//f值爲1.234567892E8

  當使用上面兩個數值進行二元操作時(例如 n+f , n是整數,f是浮點數),先要將兩個操作數轉換爲同一種類型,然後再進行計算。
  ○ 如果兩個操作數中有一個是double類型,另一個操作數就會轉換爲double類型;
  ○ 否則,如果其中一個操作數是float類型,另一個操作數將會轉換爲float類型;
  ○ 否則,如果其中一個操作數是long類型,另一個操作數將會轉換爲long類型。
  ○ 否則,兩個操作數都將被轉換爲int類型。

重難點:強制類型轉換

  如果想對浮點數進行舍入運算,那就需要使用Math.round方法。

double x = 9.997;
int nx = (int)Math.round(x);

  使用強制類型轉換的原因是因爲Math.round()方法返回的結果是一個long類型,存在信息丟失的可能。

warning:如果試圖將一個數值進行強制轉換,而又超出了目標類型的表示範圍,結果就會截斷成爲一個完全不同的值。例如,(byte)300的實際值爲44。

重點:括號與運算符級別

  表達式 a += b += c
  等價於 a += (b += c)
  因爲 += 是右邊結合運算符

  右結合運算符有
  !   ~   ++   –   +   -   ()(強制類型轉換)
  ?:   =   ((+  /  - /  * /  / /  % /  & /  | /  ^ /  << / >> /  >>>)=)

枚舉類型

  自定義枚舉類型

enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};

  然後,可以聲明這種變量:

Size s = Size.MEDIUM;

  Size類型的變量只能存儲在這個類型聲明中給定的某個枚舉值,或者null值。



<———————————————–>
From–《Java核心技術卷·I》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章