`
xuanzhui
  • 浏览: 197021 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics