運算符、字符串
1、運算符
1.1 整數除0將產生一個異常,而浮點數除0將會得到無窮大或NaN。
1.2 自增和自減
如: int m = 7;
int n = 7;
int a = 2 * m++; // a=14
int b = 2 * ++n; // b=16
★ 建議表達式中不要使用這兩個符號,這可能帶來迷惑,並產生bug。
1.3 &&和||按照短路方式求值
如:x != 0 && 1 / x > x + y // 這樣就不會發生除0的情況,因為x等於0的話,&&右側的表達式將不會執行;||也是類似,當左側為true的話,右側表達式將不執行。
1.4 位運算,這裡說明的是它的效率很高,可以在一些要求效率的運算中如乘法,可以用位運算代替。
1.4.1 &和|運算符號與&&和||運算非常類似,也應用於佈爾值,得到的結果也是佈爾值,隻是不按“短路”方式計算。即兩邊的操作數都要計算結果。
1.4.2 對移位運算符右側參數需要進行模32的運算。除非左側參數是long類型,才會進行模64.
如:1 << 35和1 << 3 結果都是8;(long) 1 << 35 才不會溢出。
1.4.3 >>> 將用0填充高位(邏輯移位);>> 用符號位填充高位(擴展符號位)。
1.5 jdk5.0開始使用 import static java.lang.Math.*,則可以在類中直接使用其中的函數,而不要加前綴Math。
1.5 數值類型之間的轉換
1.5.1 如果兩個操作數中有一個是double類型的,另一個就會轉換double類型。
1.5.2 否則,如果其中一個是float類型,另一個就會轉換為float類型
1.5.3 否則,如果其中一個是lang類型,另一個就會轉換為long類型
1.5.4 否則,兩個數都被轉換為int類型。
1.6 強制類型轉換:java允許double轉換為int,當然可能會丟失一些信息;此時應該用()給出轉換的目標類型,後面跟變量名。
1.6.1 如果目標類型的表示范圍與源目標差的太遠,就會截斷為一個完全不同的值。 如: (byte)300 結果為44。
1.6.2 不要將boolean與其他類型進行強制類型轉換,隻有極少情況下可以使用以下方式轉換:b ? 1 : 0。
2、字符串
2.1 Unicode 字符序列。如:"java\u2122"表示5個Unicode字符。
2.2 用substring方法可以取出子串。
2.3 java 可以用兩個字符串進行拼接。
2.4 java字符串是不可變字符串。
2.5 用equals檢測兩個字符串是否相當,不區分大小寫的話用equalsIgnoreCase方法。這裡不能使用==,它隻能判斷兩個字符串是否放在同一位置。
2.6 字符數據類型是采用UTF-16編碼表示unicode代碼點的代碼單元。大多數字符使用一個代碼單元可以表示,而輔助字符需要一對代碼單元表示。所以請盡量少使用char類型
本文出自 “Myworld” 博客