java容易忽略的问题

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!!!

 

 

 

 

猜你喜欢

转载自xuanzhui.iteye.com/blog/2280592