|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
在java项目标实践开辟和使用中,经常必要用到将对象转为String这一基础功效。本文将对经常使用的转换办法举行一个总结。经常使用的办法有Object#toString(),(String)要转换的对象,String.valueOf(Object)等。上面对这些办法逐一举行剖析。
办法1:接纳Object#toString()办法
请看上面的例子:
Objectobject=getObject();
System.out.println(object.toString()); 注1
在这类利用办法中,由于java.lang.Object类里已有public办法.toString(),以是对任何严厉意义上的java对象都能够挪用此办法。但在利用时要注重,必需包管object不是null值,不然将抛出NullPointerException非常。接纳这类办法时,一般派生类会掩盖Object里的toString()办法。
办法2:接纳范例转换(String)object办法
这是尺度的范例转换,将object转成String范例的值。利用这类办法时,必要注重的是范例必需能转成String范例。因而最好用instanceof做个范例反省,以判别是不是能够转换。不然简单抛出CalssCastException非常。别的,需出格当心的是因界说为Object范例的对象在转成String时语法反省其实不会报错,这将大概招致潜伏的毛病存在。这时候要分外当心。如:
Objectobj=newInteger(100);
String strVal=(String)obj;
在运转时将会堕落,由于将Integer范例强迫转换为String范例,没法经由过程。可是,
Integerobj=newInteger(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)源码以下:
/**
*ReturnsthestringrepresentationoftheObjectargument.
*
*@param obj anObject.
*@return iftheargumentisnull,thenastringequalto
*"null";otherwise,thevalueof
*obj.toString()isreturned.
*@see java.lang.Object#toString()
*/
publicstaticStringvalueOf(Objectobj){
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((Object)null)); 注2
System.out.println((Object)null); 注2
我们看到的输入将是千篇一律的工具:null,但它们意义不异吗?
注1:光就System.out.println的利用来讲,语句System.out.println(object.toString());换为System.out.println(object);更好。此处如是用法次要是为了申明Object#toString()的用法。
注2:保举利用System.out.println(String.valueOf((Object)null));不保举利用System.out.println(String.valueOf(null));在利用重载办法时,如许做是一个好的习气。
以上是对object对象转换为String的一些总结。
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. |
|