首頁  >  文章  >  Java  >  關於Java程式設計思想總結筆記Chapter3詳解

關於Java程式設計思想總結筆記Chapter3詳解

黄舟
黄舟原創
2017-07-24 14:32:391038瀏覽

本章需要總結的不多,但細節的東西需要注意,有些很容易被遺忘。

第三章

#目錄:

  • 3.1 更簡單的列印語句

  • #3.2 使用Java運算子

  • 3.3 優先權

  • 3.4 賦值

  • # 3.5 算數運算子
  • 3.6 自動遞增與遞減
  • 3.7 關係運算子
  • 3.8 邏輯運算子
  • 3.9 直接常數
  • #3.10 位元運算子
  • #3.11 移位運算子
  • 3.12 三元運算子if-else
  • #3.13 字串運算子+ 和+=
  • #3.14 使用運算元時常犯的錯誤
  • #3.15 類型轉換運算元
  • #3.16 Java沒有sizeof
  • #3.17 運算子小結

  • 3.18 總結

#3.2 使用Java運算子

#運算子為「=」、「==」和「==」能夠操作所有的物件。

3.4 賦值

若物件使用c=d,那麼c和d都指向原本只有d指向的那個物件。


#當t1 = t2 時(別名現象),接著修改t1 同時也會改變t2,因為t1、t2 包含相同的引用,指向相同的物件。

若想保持兩個物件彼此獨立,可這樣 t1.level = t2.level;  。

3.6 自動遞增與遞減

####
a = 15,++a、--a: System.out.printf("~output:" + a++);   //~ output:15a = 15,a++、a--: System.out.printf("~output:" + ++a);   // ~ output:16
###

3.7 關係運算子

#上面兩個Integer物件內容相同,但引用卻不同的,而==和!=比較的就是物件的參考(基本型別直接比較值,並沒有引用)。若想比較物件內容,使用equals()方法。

注意:equals() 方法的預設行為是比較引用,所以必須在自己的新類別中覆寫e quals() 方法,否則不會出現你想要的效果。大多數Java類別庫都覆寫了equals()方法,以便可以比較物件的內容。範例如下:

#3.9 直接常數

 十六進位:前綴0x 、    八進位: 前綴0 、   二進位沒有直接常數的表示方法。

指數數法: 1.39e-43#f 表示1.39 * 10-43       e 代表「10的冪次方」。

3.10 位元運算子

位元運算符的運算物件是二進位的「位元」(位元),Java對它的設計初衷是嵌入電視機機上盒內,所以這種面向底層的操作仍被保留下來。但是很少用到為操作符。

&與   |或    ^異或  ~非,將布林類型視為單一位元值的話,不能執行非位元(~),為了避免與邏輯NOT混淆。位元運算子與邏輯運算子類似,但沒有短路效果 。

3.11 移位運算子

#運算物件是二進位的“位元”,只可用於處理整數類型(布林類型不行)。

負數要先轉換成補碼再運算就不介紹了。

左移(高位的n個0被捨去,最低位補n個0)<<:

11的二進位形式為1011  11<<2 之後的二進位為101100  所以11<<2# = 44  相當於整數11*2n

右移(低位的n個數字移出,在高位補n個零)>>:

11的二進位形式為1011  11>>2 之後的二進位為0010  所以11>>2 = 2   相當於整數11/2n

 無符號右移運算子>>>: 無論正負向低位移出n個數字,在高位補n個零
注意:對byte或short值進行無符號右移(#>>>),得到的可能不是正確的結果。它們先被轉換成int類型,再進行右移操作,然後被截斷,賦值給原來的類型,在這種操作的情況下可能得到-1的結果,例子如下:

 

位元運算組合級執行速度是很快的,所以面試的時候可能會問:Java中用最有效率的方法算出2 乘以8 等於幾?   答:2 << 3

實際意義不大,這點速度提高沒意義程式碼不直觀。

#3.16 Java沒有sizeof

Java不需要sizeof()運算符,因為所有資料類型在所有機器中的大小都是相同的,不必考慮「移植」問題。

 

#總結:太容易的知識點,又常用到就不在筆記中出現,全部出現還不如重新看書。

 

#今天在某軟體看到這樣的吐槽

#看到立刻想到Java程式設計想法的第二章裡面的知識點:

當變數作為類別的成員使用時,Java確保給定其預設值,來確保基本類型成員變數被初始化(初始值可能不是你想要的,最好自己初始化)。注意預設初始化的方法不適用於非某個類別的欄位變量,忘記初始化,Java會在編譯時傳回錯誤給你。

堆疊:位於通用RAM(隨機存取暫存器)中,Java編譯器必須知道儲存在堆疊內所有資料的大小和生命週期,「堆疊指標」向下移動則分配新內存,向上移動則釋放內存,速度僅次於暫存器,基本資料型別和參考存放在此。

局部變數運行時被分配在堆疊中,量大,生命週期短,如果虛擬機器給每個局部變數都初始化一下,是一筆很大的開銷,但變數不初始化為預設值就使用是不安全的。


以上是關於Java程式設計思想總結筆記Chapter3詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn