1. float运算的坑
float f = 9.9f;
float m = f * 100.0f;
System.out.println(m);
结果并不是990
不管是乘以100还是100.0f
8.9f 也有这个问题
2. string split问题
String ss = "5.11.17.0/24,,2635167,,0,1,,,,";
int i = 0;
System.out.println("size: " + ss.split(",").length);
for (String s : ss.split(",")) {
System.out.println(String.format("str [%d]: [%s]", i, s));
i++;
}
可以发现输出的size是6,后面的空串都直接被丢弃了,而中间的是被保留的
3. Boolean.TRUE本质上是预定义的new Boolean(true)
public static final Boolean TRUE = new Boolean(true);
Boolean trueA = new Boolean(true);
System.out.println(trueA == Boolean.TRUE); //false!!!
System.out.println(trueA == true); //true
所以在确定Boolean类型的变量不为null的时候,最好还是和true,false比较,或者直接放if里面
同样的对于Integer和String,如果指向同一个常量,那么直接用==比较是相等的,但是如果是新new出来的,用==比较就不相等了
Integer int1 = 1;
Integer int11 = new Integer(1);
System.out.println(int1 == int11); //false!!!