欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java容易忽略的问题

程序员文章站 2022-04-22 18:09:23
...

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

 

 

 

 

相关标签: float split