1. 程式人生 > >《Java編程思想》筆記 第三章 操作符

《Java編程思想》筆記 第三章 操作符

別名 成了 有一個 detail 無符號 基本數據 bool lse 分享圖片

1.操作符種類:

運算順序1-7

1.1 一元操作符(單目操作符) - 負號, + 正號,--遞減,++遞增

1.2 算術操作符 + - * / %

1.3 移位操作符 <<左移(低位補0),>>右移(負數高位1,正數高位補0),

>>>無符號右移 (無論正負高位補0)(對二進制)

(可與 = 結合使用 <<= >>= >>>= 類似 i += 1) 移位操作符詳解

1.4 關系操作符 > < >= <= == != (生成boolean值)

1.5 邏輯操作符 && || ! (生成boolean值)

1.6 按位操作符 &與 | 或 ^ 異或 ~ 非(一元) (對二進制)

1.7 三元操作符

boolean-exp? value0 : value1 //

2.前綴式和後綴式

2.1 前綴式 -- ++ 如 --i; ++i; 先對i執行-1,+1 ,再賦值給i然後執行後面的運算;

2.2 後綴式 -- ++ 如 i--; i++; 運算(i--)結束後立刻再對i進行-1 +1;

2.3 後綴式有一個陷阱就是 i = i++ , 這代碼有坑, i 不會自增,

int s = 1;
int i = s++ * 3; System.out.println(s);//2 System.out.println(i);//3 s = 1; i = ++s * 3; System.out.println(s);//2 System.out.println(i);//6 s = 1; i = s++ + (s * 3); System.out.println(s);//2 System.out.println(i);//7

2.4 因後綴式在表達式中位置不同而造成計算結果的不同

int g = 5;               //表達式g + (g++ + g) 在內存中從左往右加載,計算時按優先級計算
int i = g + (g++ + g); //第一個g=5, g++為5 最後一個g為6, 向內存中加載數據時第一個g是5,加載運算完g++後,之後的g就是6 System.out.println(i);//16 g = 5; i = g++ + (g + g);//g++為5 後兩個g為6 System.out.println(i);//17

3.別名現象: 不同引用指向同一個對象

4.隨機數生成

Random rand = new Random() ;
        int k = rand.nextInt(100);
        int j = rand.nextFloat(); //0.0~1.0間 位數不一定

4.1 創建Random對象時沒有參數(種子)傳入,會以當前時間作為隨機數生成器的種子傳入

4.2 對於相同的種子會長生相同的隨機數序列,當前時間不停在變隨機數序列也不同

4.3 生成不同類型隨機數調用對應方法即可

4.4 nextInt()方法的參數決定了隨機數的上限,同時也決定了下限0,做除數時要+1

5. 短路:

  • 使用邏輯操作符時會出現不再計算表達式余下部分例如:test1() && test2() && test3();
  • 如果首先計算出test1()為false,那麽false && test2 肯定為false,test2()就不會執行,【false && test2】為false test3()也不會執行,如果&&成了|| 那麽就要執行test3()了。

6.直接常量規範

  • float 或 Float 賦初始值時使用L 如 float f = 2L; double加d或者D,16進制數前綴0X, 8進制前綴o

7.基本數據間的類型轉換詳情

7.1 byte,short,char 運算時會將結果提升為int

7.2 類型自動提升 小範圍類型 + 大範圍類型 = 大範圍類型 (byte,short,char) int long float double 依次增大

7.3 char c = ‘a‘ 轉整型會轉為對應ASCII碼值,char c = 98 轉String會轉為對應字符

7.4 float, double轉為整型直接結尾,不會四舍五入,四舍五入使用java.lang.Math中的round()方法。

8.數據類型

技術分享圖片

《Java編程思想》筆記 第三章 操作符