在java项目的实践开发和运用中,常常需求用到将政策转为String这一基本功能。本文将对常用的转化办法进行一个总结。常用的办法有Object#toString(),(String)要转化的政策,String.valueOf(Object)等。
办法1:选用 Object#toString()办法
请看下面的比如:
Object object = getObject();
System.out.println(object.toString());
在这种运用办法中,由于java.lang.Object类里已有public办法.toString(),所以对任何严峻意义上的java政策都能够调用此办法。但在运用时要留心,有必要保证object不是null值,否则将抛出NullPointerException失常。选用这种办法时,一般派生类会掩盖Object里的toString()办法。
办法2:选用类型转化(String)object办法
这是规范的类型转化,将object转成String类型的值。运用这种办法时,需求留心的是类型有必要能转成String类型。因而最好用instanceof做个类型检查,以判别是否能够转化。否则简略抛出CalssCastException失常。此外,需特别留心的是因界说为Object 类型的政策在转成String时语法检查并不会报错,这将或许导致潜在的过错存在。这时要格外留心。如:
Object obj = new Integer(100);
String strVal = (String)obj;
在运行时将会犯错,由于将Integer类型强制转化为String类型,无法通过。但是,
Integer obj = new Integer(100);
String strVal = (String)obj;
如是格局代码,将会报语法过错。
此外,因null值能够强制转化为任何java类类型,(String)null也是合法的。
办法3:选用String.valueOf(Object)
String.valueOf(Object)的基础是Object#toString()。但它与Object#toString()又有所不同。在前面办法1的剖析中说到,运用后者时需保证不为null。但选用第三种办法时,将不必忧虑object是否为null值这一问题。为了便于阐明问题,咱们来剖析一下相关的源代码。Jdk里String# valueOf(Object)源码如下:
/**
* Returns the string representation of the Object argument.
*
* @param obj an Object.
* @return if the argument is null, then a string equal to
* "null"; otherwise, the value of
* obj.toString() is returned.
* @see java.lang.Object#toString()
*/
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
从上面的源码能够很清楚的看出null值不必忧虑的理由。但是,这也恰恰给了咱们危险。咱们应当留心到,当object为null时,String.valueOf(object)的值是字符串”null”,而不是null!!!在运用过程中切记要留心。试想一下,假设咱们用 if(String.valueOf(object)==null){System.out.println(“传入的值是null!”);}这样的句子将或许会发作什么问题。再想一下,向控制台输出时,在视觉上如下句子在执行的作用上有什么不同:
System.out.println(String.valueOf(null));
System.out.println(null);
咱们看到的输出将是千篇一律的东西:null,但它们意义相同吗?
共同学习,写下你的评论
评论加载中...
作者其他优质文章