Java的字符串操作,强转换,toString以及String.valueOf()

我现在知道的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)做 类型强制转换。

猜你喜欢

转载自edward-lee.iteye.com/blog/2328737
今日推荐