黑马程序员技术交流社区
标题:
谁来解释下这个结果
[打印本页]
作者:
嘿~~
时间:
2014-9-30 14:23
标题:
谁来解释下这个结果
import java.util.Arrays;
public class AddArrByThread {
public static void main(String[] args){
int[] arr = new int[3];
String str = Arrays.toString(arr);
StringBuilder sb = new StringBuilder(str);
for (int x = 0; x < arr.length; x++) {
sb.append(x+3);
}
byte[] by = sb.toString().getBytes();
printArr(by);
}
public static void printArr(byte[] arr){
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
System.out.println();
}
}
复制代码
打印结果 [91,48,44,32,48,44,32,48,93,51,52,53]
这个结果谁能给解释下
作者:
鲁行
时间:
2014-10-4 00:30
import java.util.Arrays;
/*
将你每一步得到结果进行打印,你就会发现打印出这个结果的原因,
下面给你做一个详细的分析
*/
class Test
{
public static void main(String[] args)
{
int[] arr = new int[3];//默认int数组的初始化值都是0,所以是3个0;
String str = Arrays.toString(arr);
System.out.println(str);//[0, 0, 0]将int数组变成字符串输出的结果.
StringBuilder sb = new StringBuilder(str);
System.out.println(sb);//[0, 0, 0]StringBuilder输出的结果
for (int x = 0; x < arr.length; x++)
{
sb.append(x+3);
}
System.out.println(sb.toString());//[0, 0, 0]345//sb添加元素后的结果
byte[] by = sb.toString().getBytes();//这一步就是关键了.
/*
当把sb转成byte数组时,sb中的字符都会转成byte,打印的是对于的ASCII表上的数值.
字符'['对应91;字符'0'对应48;字符','对应44;字符空格' '对应32;字符']'对应93;
字符'3'就是51;'4'就是52;'5'就是53;
容器sb中有12个字符,分别是1个'[';3个'0';2个',';2个空格' ';1个']';'3';'4';'5';
所以打印结果就是[91,48,44,32,48,44,32,48,93,51,52,53]
*/
printArr(by);//[91,48,44,32,48,44,32,48,93,51,52,53]
}
public static void printArr(byte[] arr)
{
System.out.print("[");
for (int x = 0; x < arr.length; x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
System.out.println();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2