我现在知道的Java对象转换为字符串的方法如下(以后还有再补充):
1、java.lang.Object类的toString()方法,对于这个方法,通常需要Object的子类进行Override(重写);
2、java.lang.String类的valueOf()方法;
3、String的强制转换,(String) obj
分析上面三中方法:
1、java.lang.Object类的toString()方法
toString方法是java.lang.Object对象的一个public方法。
在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法。
采用该种方法时,子类会覆盖Object里的toString()方法。
首先看看Object类中toString()方法的源码
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Object中的toString()方法,返回的是方法的 类名 + "@" + 16 + 无符号十六进制的对象的hashCode
注意:
使用这个方法时,Object对象不能为null,否则会报空指针异常(java.lang.NullPointerException)
java.lang.String类中toString()方法源码如下
public String toString() {
return this;
}
这里就是返回String类本身
如果自定义的Class想使用toString()方法转换为把对象转换为String类型,建议重写toString()方法
Java中的很多Class,都在类定义时重写了toString()方法
2、java.lang.String的valueOf(Object obj)方法
方法源码如下
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
查看源码,可以看到,如果Object对象为null时,返回的是一个"null"字符串,而不是null
如果Object对象不为null,则调用对象自己的toString()方法。
3、使用(String) 强制转换对象
当Object或者Integer等其他类型,使用(String)做强制转换时,通常都会报
java.lang.ClassCastException 异常,一般只有String类型的才使用这种方法进行转换
总结:
1、使用toString()时,派生类最好重写java.lang.Object的toString()方法,而且当使用Object的toString()时,对象不能为null;
2、String.valueOf(Object obj) 不需要担心对象为null的问题,但是要注意到,对象为null时,返回的是"null"字符串,而不是null;
3、不建议使用(String)做 类型强制转换。