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