说说Java中的new String()和toString()

2014-07-23 • 技术文章评论

区别

一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法。Object类的toString()方法返回一个能够代表该对象的字符串,由类名(对象是该类的一个实例)、“@”和此对象哈希码的无符号十六进制表示组成,即

1
getClass().getName() + '@' + Integer.toHexString(hashCode())

而new String()的接受的参数(这里仅仅指首个参数)类型包括byte[]、char[]、StringBuffer、StringBuilder、String、int[](ASCII码),将这些类型的字符数组或字符串或相似类型转化为String类型。

警告

正是基于两者的区别,将byte[]或char[]转化为String时不能使用toString()方法,而应使用new String()。

边注

查询相关资料时,看到(String)转型和toString()区别的问题。前者是将对象直接转型为String,而后者是调用了toString()方法。所以对于可达到同样目的不影响前后使用时,应优先使用前者,因为其没有外部方法调用,效率更高。

参考资料

Oracle JavaSE Docs