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()在字符转码时用,比如字符的加密解密等等;