public class Test {
public static void main(String[] args) {
byte[] array = {Byte.valueOf("67"), Byte.valueOf("68"), Byte.valueOf("69")};
System.out.println(String.valueOf(array));
System.out.println(new String(array));
}
}为什么前一个打印出来的是地址呢?没道理啊,返回的不都是String对象吗?
System.out.println(new String(array));这个是跟据array建立新的字符串,它会把byte[]里的内容拼出来。
你给的是个数组引用,String .valueOf(array)这个方法的参数是Object类型的,这样用自然要打印array的地址
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
valueOf()参数为Object的实现,调用的都是obj的toString()方法,String类型的toString()是重写过的,返回它自身,数组的就是返回地址了。
所以String.valueOf(array)是一个字符串 但是字符串本身就是一个地址内容