{
    byte[]={1,2,3};
    String str=new String(b);
    System.out.println(str);
}
在我的2k机器上编译运行后,输出的却不是123,而是另外的一串符号?谢谢!
    

解决方案 »

  1.   

    看下ascii表中1,2,3对应的字符是什么,就明白了。想得到123的结果,应该是这样:byte[] b={49,50,51};
    String str=new String(b);
    System.out.println(str); 
      

  2.   

    new String()并不是实现楼主想象的那个功能,每个string,通过不同的字符集,可能编码成不同的byte[],new String()是把byte[]解码成在这个字符集上的string,其实还有一个参数 new String(byte[] b,String charset),String(byte[] b)的charset参数取得是系统默认字符集楼主想要的功能是用String(char[] ch)
    char data[] = {'1', '2', '3'};
    String str = new String(data);
      

  3.   

    API 解释如下:
    public String(byte[] bytes)
    构造一个新的 String,方法是使用平台的默认字符集解码字节的指定数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。
      

  4.   

    char data[] = {'1', '2', '3'}; 
    String str = new String(data); 
      

  5.   


    public static void main(String[] args) {
    byte[] b={'1','2','3'};
        String str=new String(b);
        System.out.println(str); 
    }
      

  6.   

    假如用字节流读取文本文件,文本文件读到byte数组里面就是一串数组,但是用new String(byte [] array)构造String的话,就可以得到原来文本中的字符串。
      

  7.   

    123是整数类型,一般字符打印是会打印相应的Ascii字符的。这个查看一下Ascii字符编码就可以了,要想显示123,将它们加上'1','2','3'