黑马程序员技术交流社区

标题: 谁来解释下这个结果 [打印本页]

作者: 嘿~~    时间: 2014-9-30 14:23
标题: 谁来解释下这个结果
  1. import java.util.Arrays;

  2. public class  AddArrByThread {
  3.        
  4.        
  5.        
  6.         public static void main(String[] args){
  7.                 int[] arr = new int[3];
  8.                 String str = Arrays.toString(arr);
  9.                 StringBuilder sb = new StringBuilder(str);
  10.                 for (int x = 0; x < arr.length; x++) {
  11.                         sb.append(x+3);
  12.                 }
  13.                 byte[] by = sb.toString().getBytes();
  14.                 printArr(by);
  15.         }
  16.        
  17.        
  18.         public static void printArr(byte[] arr){
  19.                 System.out.print("[");
  20.                 for (int x = 0; x < arr.length; x++) {
  21.                         if(x!=arr.length-1)
  22.                                 System.out.print(arr[x]+",");
  23.                         else
  24.                                 System.out.print(arr[x]+"]");
  25.                 }
  26.                 System.out.println();
  27.         }
  28. }
复制代码


打印结果       [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