1. 程式人生 > >讀書筆記 JAVA程式設計思想 第二章 操作符

讀書筆記 JAVA程式設計思想 第二章 操作符

3.2 操作符

= == != 幾乎能操作所有的物件。

3.3 優先順序

先乘除後加減

 

3.4 賦值

左值必須是一個明確的,右值可以是任何常量,變數或表示式。必須有一個物理空間來儲存右邊的值

但是不能把任何東西賦給一個常數。常數不能作為左值。

 

如果對物件使用了 賦值,經常會更改兩個物件的引用。 因為賦值操作使得兩個物件的引用指向了同一個物理空間(物件)

 

 

字尾形式,是唯一具有 副作用的操作符。

i++

先將1與變數的值相加,將新值(11)存回變數

表示式返回舊值(10).

 

++I

先將1與變數的值相加,將新值(11)存回變數

表示式返回新值(11).

 

 

  1. 看你期待表示式的返回值是新值還是舊值;
  2. 在不關心(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,會執行布林布林代數運算

~非 ^異或