java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要介绍了 Java 中区别. toString() ,(String),valueOf()方法, 需要的朋友可以参考下
在 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)源码如下:
- 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));// 是字符串 null
- System.out.println(null);// 是空值 null
我们看到的输出将是一模一样的东西: null, 但它们意义相同吗?
来源: http://www.phperz.com/article/18/0214/358691.html