標籤:
優先順序賦值
對象在使用c=d,那麼c和d都指向原本只有d指向的那個對象。
方法調用中的別名問題:當一個對象作為參數傳遞到一個函數中,函數改變了這個參數,則改變了傳遞進來的對象;
自增和自減
浮點型的變數也是可以++或--的。
關係操作符
double x=0.1;double y=0.1;System.out.println(x==y);
輸出:true
Integer x=new Integer(47);Integer y=new Integer(47);System.out.println(x==y);
System.out.println(x.equals(y));
輸出:false
true
基礎資料型別 (Elementary Data Type)直接使用==和!=即可,但除此之外的資料類型,如果要比較等價,需要使用equals方法;
邏輯操作符
Integer x=new Integer(47);Integer y=new Integer(47);System.out.println(x
&&y); //出錯,此處與C/C++不同
短路現象:
移位操作符:>>,<<,>>>>>:
11 >> 2,則是將數字11右移2位
計算過程:11的二進位形式為:0000 0000 0000 0000 0000 0000 0000 1011,然後把低位的最後兩個數字移出,因為該數字是正數,所以在高位補零。則得到的最終結果是0000 0000 0000 0000 0000 0000 0000 0010.轉換為十進位是3.數學意義:右移一位相當於除2,右移n位相當於除以2的n次方。
<<:
3 << 2,則是將數字3左移2位:
計算過程:
3 << 2
首先把3轉換為位元字0000 0000 0000 0000 0000 0000 0000 0011,然後把該數字高位(左側)的兩個零移出,其他的數字都朝左平移2位,最後在低位(右側)的兩個空位補零。則得到的最終結果是0000 0000 0000 0000 0000 0000 0000 1100,則轉換為十進位是12.數學意義:
在數字沒有溢出的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。
>>>:
按二進位形式把所有的數字向右移動對應位元,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。
類型轉換
將float或double轉型為整型時,總是對該數字執行截尾。如果想要得到舍入操作,就需要使用java.lang.Math中的round()方法:
double x=0.5;System.out.println((int)x); //0System.out.println(Math.round(x)); //1
【Thinking in Java-CHAPTER 3】操作符