快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

将JAVA对象转为JAVA STRING的几种常用方式剖析

将java对象转为java String的几种常用方式剖析

在java项目的实际开发和应用中,经常需要用到将对象转为String这一基本功能。本文将对常用的转变方式进行一个总结。常用的方式有Object#toString(),(String)要转变的对象,String.valueOf(Object)等。下面对这些方式一一进行分析。

方式1:采用 Object#toString()方式
请看下面的例子:

Object object = 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时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。如:

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((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中的两个特别变量THIS和SUPER
下一教程: 完全把握JAVA中的

您可以阅读与"将JAVA对象转为JAVA STRING的几种常用方式剖析"相关的教程:
· 一些异常有用的JAVA常用方式(1)
· JAVA正则表达式4种常用功能
· Java新手常犯的几种错误
· 一些异常有用的JAVA常用方式( 2)
· JAVA正则表达式4种常用功能
    微笑服务 优质保证 索取样品