在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。常用的方法有 对象.toString(),Objects.toString(),强转,String.valueOf(Object)等。
1)对象.toString()
因为所有java对象都继承至Object,java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用此方法。但是,通常派生类会重写Object里的toString() 方法。调用该方法,需保证对象不是null值,否则将抛出NullPointerException异常。如果贸然地调用改变量的toString()方法,则可能引发NullPointerException。
2)Objects.toString()
这是Java 7新增的一个Objects类(Java为工具类的命名习惯是添加一个字母s),其中有静态方法toString(Object obj)。这里obj若为null,Objects.toString(obj)将会返回“null”字符串。
其方法说明如下,可以看出实际调用的是 String.valueOf() 方法。
/**
* Returns the result of calling {@code toString} for a non-{@code
* null} argument and {@code "null"} for a {@code null} argument.
*
* @param o an object
* @return the result of calling {@code toString} for a non-{@code
* null} argument and {@code "null"} for a {@code null} argument
* @see Object#toString
* @see String#valueOf(Object)
*/
public static String toString(Object o) {
return String.valueOf(o);
}
3)强转
使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,以判断是否可以转换。否则容易抛出ClassCastException异常。此外,需特别小心的是因定义为Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。null可以强制转换为任何java类类型,(String)null也是合法的。
4)String.valueOf()
String类提供的将基本类型值转为String对象的静态方法,返回删除头尾空白符的字符串。String.valueOf(Object obj)当这里的obj是null,将返回“null”字符串。
其方法说明如下,可以看出实际调用的是 对象.toString() 方法。
/**
* Returns the string representation of the {@code Object} argument.
*
* @param obj an {@code Object}.
* @return if the argument is {@code null}, then a string equal to
* {@code "null"}; otherwise, the value of
* {@code obj.toString()} is returned.
* @see java.lang.Object#toString()
*/
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
本文探讨了在Java中将对象转换为String的四种常见方法:对象.toString(),Objects.toString(),强转以及String.valueOf(Object)。每个方法的特点和适用场景被详细阐述,包括对空值的处理和可能抛出的异常。
113

被折叠的 条评论
为什么被折叠?



