Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用String.valueOf(char[]),但显示为乱码_Java_Arrays_String_Char - Fatal编程技术网

Java使用String.valueOf(char[]),但显示为乱码

Java使用String.valueOf(char[]),但显示为乱码,java,arrays,string,char,Java,Arrays,String,Char,使用这种方式,将得到如下乱码输出: 输入: char[] string = new char[16]; for(int i = 15; i >= 0; i--,input>>=1){ string[i] = (char)(input&1+48);//ascii '0'=48 } return String.valueOf(string); 输出: 0 有关此错误的分析: (will show binary square) 当我写“(char)((int)

使用这种方式,将得到如下乱码输出:

输入:

char[] string = new char[16];
for(int i = 15; i >= 0; i--,input>>=1){
    string[i] = (char)(input&1+48);//ascii '0'=48
}
return String.valueOf(string);
输出:

0 

有关此错误的分析:

(will show binary square)
当我写“(char)((int)0&1)+48)”时,IDE告诉我转换为int是多余的

正确的代码:

char[] string2 = {(char)(0&1+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test
char[] string2 = {(char)(((int)0&1)+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test
System.out.println(string2);//Test
System.out.println(String.valueOf(string2));//Test
第二种方式:

char[] string = new char[16];
for(int i = 15; i >= 0; i--,input>>=1){
    string[i] = (char)((int)(input&1)+48);//ascii '0'=48
}
return String.valueOf(string);

您知道这里的&code>input&1是如何工作的吗?什么是
input
?请提供一个,特别强调完整性。对于dup敲打这个的用户,我恭敬地提出,这个问题太不清楚,不可能是一个dup的任何东西。当它可能需要关闭为离题或不清楚时,以dup形式关闭它会将其视为合法。你们为什么要关闭我的问题?我对你们的问题投了高票,请清理它并使其连贯一致。
StringBuilder sb = new StringBuilder("");
for(int i = 15; i >= 0; i--,input>>=1){
    sb.insert(0,String.valueOf(input&1));
}
return sb.toString();