new String()与toString

str.toString是调用了str这个object对象的类的toString方法。一般是返回这么一个String:[class name]@[hashCode]。
new String(str)是根据parameter是一个字节数组,使用java虚拟机默认的编码格式,将这个字节数组decode为对应的字符。若虚拟机默认的编码格式是ISO-8859-1,按照ascii编码表即可得到字节对应的字符。

byte[] b = {'a','b','c'};
System.out.println(b.toString());  
System.out.println(new String(b));

第一个得到的是[B@15db9742,第二个返回abc

toString 若未重写,在object类中,返回一个字符串,该字符串由类名(对象是该类的一个实例)、“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())

toString默认返回当前对象得内存地址,new String()是返回一个真实的值

所以,

new String()在字符转码时用,比如字符的加密解密等等;

原文地址:https://www.cnblogs.com/zhangyuanbo/p/11889048.html