標籤:
Java基礎細節記錄
Java的index不是從0開始的情況:
格式化參數索引是從1開始的,而不是0:System.out.println(%1$s %2$s, "Test: ", "OK");
Java中在使用while loop的時候要小心endless loop的情況, 因為while是當什麼時候的意思, 容易沒有終止條件而不停的運行無法終止;
Java中switch中每個case都需要有“break;”, 並且還要有default的語句用於處理所有case之外的case; 且case標籤必須是整數或者枚舉常量;
String equals(),禁用 “==”, except (String A == null); String的== 比較中為比較儲存地址, 如果字串是通過拼接或其他動作得到的就會出現不一致的情況, 所以不能使用以避免bug的產生:
e.g.
1 public static void main(String[] args) { 2 // TODO Auto-generated method stub 3 4 String A = "AB"; 5 String B = "A"; 6 String C = B + "B"; 7 if(A == C){ 8 System.out.println("A==C is true"); 9 }10 11 if(A.equals(C)){12 System.out.println("A equals B is true"); 13 }14}
Output: A equals B is true;
常量聲明: final (Constant為保留關鍵字不建議使用)
Double類型的運算注意: 2.0-1.1=0.8999999...
自加自減的運算子: 使用需注意因為更新和運算的順序會影響最終的結果
位元運算符和關係運算子的混淆:
“|, &, ^, ~” 和 "||, &&, !"
數實值型別的轉換:
無資料丟失轉換
byte --> short --> int --> long
|--> double <-- float
char --> int
有資料丟失
int ---> float <--- long ---> double
Math類的方法:
Math.round實現四捨五入;
java.math.XXXX比較牛掰;
拷貝賦值:
對象的賦值是引用的賦值, 如果複本修改則引用指向內容被修改, 從而導致全部對象值改變,而如果是其他的單一指派陳述式則是只會單一方面的值變化不會彼此影響;
常用的語句書寫:
Condition?expression1:expression2;
for(type para : paraSet){}
Java Learning (2)