讀書筆記 JAVA程式設計思想 第二章 操作符
阿新 • • 發佈:2018-11-10
3.2 操作符
= == != 幾乎能操作所有的物件。
3.3 優先順序
先乘除後加減
3.4 賦值
左值必須是一個明確的,右值可以是任何常量,變數或表示式。必須有一個物理空間來儲存右邊的值
但是不能把任何東西賦給一個常數。常數不能作為左值。
如果對物件使用了 賦值,經常會更改兩個物件的引用。 因為賦值操作使得兩個物件的引用指向了同一個物理空間(物件)
字尾形式,是唯一具有 副作用的操作符。
i++
先將1與變數的值相加,將新值(11)存回變數
表示式返回舊值(10).
++I
先將1與變數的值相加,將新值(11)存回變數
表示式返回新值(11).
- 看你期待表示式的返回值是新值還是舊值;
- 在不關心(don't care)表示式的返回值時,優先選用字首++(返回新值).
如果選用字尾++, 那麼表示式將返回變數的舊值,那麼這一瞬間,記憶體將同時記錄(儲存)舊值和新值兩個變數,其中舊值是返回後就不被使用的臨時變數。但這個臨時變數是不必要的,亦即“拷貝舊值的動作”以及“佔用的記憶體”都是不必要的. 以避免不必要的拷貝和記憶體浪費。
3.7 關係操作符。
3.7.1 測試物件的等價性
如果想比較所有物件的實際內容 用equals() , 但是不適用於基本型別
Equals 是比較引用,如果是自己建的類必須覆蓋 equals 方法
3.8 邏輯操作符
不可以將非布林值 當做布林值在邏輯表示式中用
短路
前面的為ture 後面的不計算
3.9 直接常量
如果十六進位制 給出超出範圍的值,會自動轉換成int 並且告訴我們需要對這次賦值進行窄化轉型。
Integer 和Long 的toBinaryString()可以實現二進位制顯示。較小的型別給Integer.toBinaryString 會自動轉為int
3.10 按位操作符
如果兩個基本型別都是bit,會執行布林布林代數運算
~非 ^異或