Java中Integer与String类型互转
java valueof前⾔
在⽇常的Java编程中,会遇到需要将int类型转换成String类型的情况,这时候可以使⽤Integer类进⾏操作。在转换的时候,需要注意对象是否为null
⼀、integer转String类型
存在三种⽅法,核⼼都是静态⽅法toString()
//⽅法⼀:Integer类的静态⽅法toString()
Integer a =3;
String str = String(a)
//⽅法⼆:Integer类的成员⽅法toString()
Integer a =3;
String str = a.toString();
//⽅法三:String类的静态⽅法valueOf()
Integer a =3;
String str = String.valueOf(a);
查看Integer 类中成员⽅法toString()可以发现其源码
public String toString(){
return toString(value);
}
综上⽅法⼀、⼆是同⼀种⽅式,这两种⽅法在a为null的时候会报空指针异常。
第三种⽅法其源码为:
public static String valueOf(Object obj){
return(obj == null)?"null": String();
}
可见,第三种⽅式其核⼼也是调⽤了静态⽅法toString(),只是在其之前做了为==null的三⽬运算。
所以使⽤这种⽅式可以避免出现空指针异常的情况,但相对的会把null转化为String类型进⾏输出。此时⽆法使⽤==null来判断空值。
扩展
当需要转换成String类型,同时保留null属性时,可以⾃⼰写⼀个三⽬运算。
public static String valueOf(Object obj){
return(obj == null)? null : String();
}
⼆、String转Integer类型
可以使⽤Integer.valueOf()来进⾏操作。
值得注意的是根据其源码来看:
public static Integer valueOf(String s)throws NumberFormatException{
return Integer valueOf(parseInt(s));
通过源码可以看到⾸先是通过parseInt(s)⽅法将String类型转化为int类型,然后使⽤Integer valueOf(int s)来进⾏转换。
其中Integer valueOf(int s)源码为:
public static Integer valueOf(int i){
if(i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i +(-IntegerCache.low)];
return new Integer(i);
}
在-128~127之间的常量缓存下来,当超出范围时创建新对象,此处不扩张,可查阅int类型与对象integer类的区别。
所以此种⽅式当待转换参数为null时会报空指针异常,所以在转换前需要判断是否为null。
总结
在int或integer转String的时候,调⽤静态⽅法toString()即可,但需要做好对象为null的判断,避免出现空指针异常报错。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论