[轉載]JAVA操作符

來源:互聯網
上載者:User

幾乎所有運算子都只能操作“主類型”(Primitives)。例外是“=”、“= =”和“! =”,它們能操作所有對象。除此以外,String類支援“+”和“+=”。

(1)賦值

主類型使用“A=B”,那麼B處的內容就複製到A。若修改A,那麼B根本不會受修改的影響。

對象“賦值”的時候情況發生了變化。對一個對象進行操作時,我們真正操作的是它的控制代碼。所以倘若“從一個對象到另一個對象”賦值,實際就是將控制代碼從一個地方複製到另一個地方。這意味著假若為對象使用“C=D”,那麼C和D最終都會指向最初只有D才指向的那個對象。

short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)

short s1 = 1; s1 += 1;(可以正確編譯) +=運算子無類型轉換問題

(2)算術運算子

Java的算術運算子:加號(+)、減號(-)、除號(/)、乘號(*)以及模數(%,從整數除法中獲得餘數)。整數除法會直接砍掉小數,而不是進位。

(3)自動遞增、遞減

對於前遞增和前遞減(如++A或--A),會先執行運算,再產生值。

對於後遞增和後遞減(如A++或A--),會先產生值,再執行運算。

(4)關係運算子

關係運算子包括<、>、<=、>=、= =、!=

等於和不等於適用於所有內建的資料類型,但其他比較不適用於boolean類型。

想對比兩個對象的實際內容是否相同,必須使用所有對象都適用的特殊方法equals()。

equals()方法不適用於“主類型”,那些類型直接使用= =和!=即可。

equals()的預設是比較控制代碼。所以除非在自己的新類中改變了equals(),否則不可能表現出我們希望的行為

大多數Java類庫都實現了equals(),所以它實際比較的是對象的內容,而非它們的控制代碼

= =和! =比較的是物件控點,而不是對象的實際內容

(5)邏輯運算子

邏輯運算子&&、||、!能產生一個布爾值

&和&&都可作為邏輯運算子“與”使用,但是&&是“短路與”,運算時先判斷符號前面的運算式的值,如果能夠確定整個運算式的值,則不進行符號後面的運算式的運算。

另外,&可作為位元運算符使用

(6)按位元運算符

按位AND運算子(&)

按位OR運算子(|)

按位XOR(^,異或)

按位NOT(~,也叫作“非”運算子)屬於一元運算子,產生與輸入位的相反的值

(7)移位元運算符

              左移位元運算符(<<)能將運算對象向左移動運算子右側指定的位元(在低位補0)。

有符號右移位元運算符(>>)將運算對象向右移動運算子右側指定的位元。有符號右移位元運算符使用了符號擴充:若值為正,則在高位插入0;若值為負,則在高位插入1

無符號右移位元運算符(>>>),它使用了“零擴充”:無論正負,都在高位插入0

(8)三元IF-ELSE運算子

              布林運算式 ? 值0:值1   “布林運算式”的結果為true,就計算“值0”,否則計算“值1”

(9)字串運算子+

int x = 0, y = 1, z = 2;
System.out.println(“out:” + x + y + z);
在這裡,Java編譯器會將x,y和z轉換成它們的字串形式,而不是先把它們加到一起

              運用“String +”時,若運算式以一個String起頭,那麼後續所有運算對象都會轉換到字串。

想通過“加號”串連字串(使用Java的早期版本),請務必保證第一個元素是字串

(10)造型(Cast)運算子

對於“縮小轉換”(Narrowing Conversion)的操作(能容納更多資訊的資料類型,將其轉換成容量較小的類型,例如int轉short),此時就可能面臨資訊丟失的危險。此時,編譯器會強迫我們進行明確造型

對於“放大轉換”(Widening conversion),則不必進行明確造型,因為新類型肯定能容納原來類型的資訊,不會造成任何資訊的丟失

布爾值(bollean)根本不允許進行任何造型處理,其它任何主類型可互相造型

將float或double值造型成整數值後,總是將小數部分“砍掉”,不作任何進位處理

Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)==12      Math.round(-11.5)==-11

round方法返回與參數最接近的長整數,參數加1/2後求其floor.

相關文章

聯繫我們

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