Java編程思想總結筆記Chapter 3

來源:互聯網
上載者:User

標籤:轉換   設計   生命週期   java編程思想   編譯   richtext   運行   height   ref   

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

第三章

目錄:

  • 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-43f 表示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編譯器必須知道儲存在堆棧內所有資料的大小和生命週期,“堆棧指標”向下移動則分配新記憶體,向上移動則釋放記憶體,速度僅次於寄存器,基礎資料型別 (Elementary Data Type)和引用存放在此。

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

轉載註明:http://www.cnblogs.com/wujiancheng/

Java編程思想總結筆記The first chapterJava編程思想總結筆記Chapter 2

Java編程思想總結筆記Chapter 3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.