Java之路(二) 操作符

來源:互聯網
上載者:User

標籤:問題   length   lang   c++   auto   應用   關係操作符   四捨五入   char   

操作符比較簡單,這裡只點一下注意事項和要點,請牢記。

操作符接受一個或多個參數,並產生一個新值。

Java中,幾乎所有的操作符都只能操作基本類型。

例外是 = == 和 !=,它們可以操作所有的對象。此外,String類支援+和+=。

1.賦值 =

基本類型儲存了實際的數值,所以為基本類型變數賦值是將一個地方的內容賦值到變數所表示的地址。

為對象賦值時,實際操作的是引用。我們如所示,假設T1和T2是同一個類的兩個對象的引用,分別指向各自的對象。開始如A所示,當執行賦值T1=T2後,如B所示,可以看到,引用T1和T2都指向了T2指向的對象,而T1指向的對象卻無法再訪問了,這種現象叫做別名現象。

如何避免別名現象呢?

可以使用這種方式賦值,T1.length=T2.length,T1.width=T2.width,可以保證兩個對象彼此獨立。但是這違背了物件導向的設計原則。

與此相似,當向一個方法傳遞對象時,實際上傳遞的也是引用,也會造成別名問題。

2.算數操作符

二元操作符:+ - * / % += -= *= /=

一元操作符:+ -

一元減號用於轉變資料的符號。一元加號只是為了與一元減號相對應,它唯一的用處是將較小的型別提升為int。

3.自增和自減

有首碼式和尾碼式兩種,是除了涉及賦值的操作符以外,唯一具有副作用的操作符。

4.關係操作符

關係操作符產生布爾結果,計算的是運算元中的值之間的關係。

關係操作符:<  >  <=  >=  ==  !=

==和!=適用於所有的基礎資料型別 (Elementary Data Type),其他比較操作符不適用於布爾類型。

基本類型之間的比較使用 == 和 != 即可。

當比較兩個對象的實際內容時,必須使用所有對象都適用的equals()方法(不適用於基本類型),使用 == 和 != 比較的是對象的引用。

注意:equals()預設行為是比較引用,可以進行對象實際內容的比較是因為在相關類庫中做了覆蓋,因此當我們建立自己的類時,必須在類中覆蓋equals()方法。

5.邏輯操作符

邏輯操作符:&&  ||  !

根據參數的邏輯關係,產生一個布爾值。

只能應用於布爾值。

不可以將非布爾值當做布爾值在邏輯運算式中使用。

具有短路性質。

6.直接常量

有時候編譯器不知道建立什麼樣的類型,可以用與直接常量相關的字元來指導編譯器。

如 0xff,0177,100f,100L,10D等。

指數的表示方法:1.39E-43f。

7.按位操作符

按位操作符:&  |  ~  &=  |=  ^=

操作位。

8.移位操作符

移位操作符:<<  >>  <<=  =>>

注意:對char,byte和short類型的數值進行移位處理前,會將它們轉換成int類型,而且得到的結果也為int類型。只有數值右端的低5位有用(int值的範圍)。同理,long類型的數值進行移位操作後,得到的結果右端的低6位有用。

9.三元操作符

三元操作符:  ? :

10.字串操作符

字串操作符: +  +=

用以串連不同的字串。

如果運算式以一個字串起頭,後續的所有運算元都必須是字串型,

技巧:有時會用一個空的String + 基本類型變數,以執行對基本類型的字串的轉換,不用顯示地調用Integer.toString()。

11.類型轉換

截尾:將一個浮點值轉換為整型值時,會捨去小數部分。

舍入:想在將一個浮點值轉換為整型值時進行四捨五入的操作,要使用java.lang.Math()中的round()方法。

round方法是java.lang的一部分,不需要額外匯入。

提升:對基本資料執行算數運算或者按位元運算時,只要類型比int小(char,byte,short),運算前就將其自動轉換為int,結果也為int類型。一般而言,運算式中出現的最大的資料類型決定了運算式最終結果的資料類型。如果想把結果賦給較小的資料類型,需要使用類型轉換,這可能造成資訊丟失。

12.Java沒有sizeof

C和C++中使用sizeof()的最大原因是為了移植。因為不同資料類型在不同機器上可能有不同的大小,在進行一些與儲存空間有關的運算時,必須知道具體類型有多大,sizeof()可以實現。

Java中資料類型的大小固定,在所有機器中大小相同,因此不需要sizeof(),它已經被設計在語言中。

Java之路(二) 操作符

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.