一切福田,不離方寸,從心而覓,感無不通。

java类型转换常见的错误

类型转换虽然很简单,但是还是有些小细节要多注意。

  • String转化为int:

 

  • String转化为Integer,可以如下所示。

也适用于int转化为Integer:

 

注意:不管是使用Integer.parseInt(),还是使用Integer.valueOf()将字符串转换成数字,

如果是非数字的字符串,会报错:NumberFormatException: For input string: ""

另外,Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647(-231至 231-1) ,包括-2147483648 和 2147483647。

如果超过了这个范围,也会报错。比如Integer.valueOf("2147483648"),超过了Integer范围。因此会报错: For input string: "2147483648"

更安全的做法是,使用apache包的NumberUtils,如下:

注意:NumberUtils只处理整数,不能用来处理小数。

 

  • String转BigDecimal:

 

  • String转double :

 

  • Double转化为int:

 

  • 其他类型转String:

 

注意:当String.valueOf()的参数obj为null时,返回值是字符串"null"!!而不是null。

如果希望obj为null时,返回"",可以使用apache-commons-lang的包,如下所示:

 

如果希望obj为null时,返回null,如下:

ObjectUtils.toString(object,nullStr),第二参数nullStr表示,当object为null时,方法返回的值。

 

  • Integer转double:
    使用doubleValue()方法,或者 (double)强制转换。

 

  • 其他类型转Double:

 

  • 比较小数是否相等。

比较Double是否相等。比较BigDecimal是否相等。

如下所示:

 

  • 比较Double类型的大小:

 

  • 比较double类型的大小:

除了用BigDemical的compare()方法,可以直接用Double.doubleToLongBits()的结果值用==,>,<进行比较

 

from:https://www.cnblogs.com/expiator/p/12602446.html