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;

常量聲明:

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){}