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对象吗?

解决方案 »

  1.   

            System.out.println(String.valueOf(array));因为array是对象,所以打印出对象地址
            System.out.println(new String(array));这个是跟据array建立新的字符串,它会把byte[]里的内容拼出来。
      

  2.   

    System.out.println(String.valueOf(array[0]));这样可以打印里面的数据
    你给的是个数组引用,String .valueOf(array)这个方法的参数是Object类型的,这样用自然要打印array的地址
      

  3.   


        public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
        }
    valueOf()参数为Object的实现,调用的都是obj的toString()方法,String类型的toString()是重写过的,返回它自身,数组的就是返回地址了。
    所以String.valueOf(array)是一个字符串 但是字符串本身就是一个地址内容
      

  4.   

    原来String.valueOf(byte[] data);这个功能没有啊,而是把array作为了一个对象,我明白了,谢谢大家