Java数组输出令人困惑

时间:2018-05-11 20:48:15

标签: java arrays string

摘自本网站:https://www.journaldev.com/770/string-byte-array-java

package com.journaldev.util;

public class ByteArrayToString {

    public static void main(String[] args) {
        byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
        byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

        String str = new String(byteArray);
        String str1 = new String(byteArray1);

        System.out.println(str);
        System.out.println(str1);
    }
}

为什么输出:

  

PANKAJ

     

PANKAJ

我看不出它是怎么回事:

  

PANKAJ

     

806578756574

2 个答案:

答案 0 :(得分:1)

byte[] bytes构造函数将解析包含的数据,正如@khelwood所说的那样,数字是字母的ASCII表示,因此80表示'p'字符。

如果您想要输出,则应使用

String[] srtArray = {"P","A"...}
String[] srtArray = {"80","65"...}

如果是{ 'P', 'A'...},它们已经被编码,但数字将被转换,因为它们被声明为numbers而不是string。 “80”与80不同。

答案 1 :(得分:0)

试试这段代码:

public class ByteArrayToString {
  public static void main(String[] args) {
        byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
        byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

        String str = new String(byteArray);
        String str1 = new String(byteArray1);

        System.out.println(str);
        for (byte b : byteArray1) {
            System.out.print(b);
        }
        //System.out.println(str1);
    }

} 节目输出