黑马程序员技术交流社区

标题: 数组的初始化问题 [打印本页]

作者: redlake    时间: 2015-4-29 22:39
标题: 数组的初始化问题
  1. import java.util.Arrays;
  2. class ArrayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 char[] arr= new char[6];
  7.                 arr={'B','d','c','A','r','t'};
  8.                 for (int i=0;i<arr.length ;i++ )
  9.                 {
  10.                         System.out.println(arr[i]);
  11.                 }
  12.                         System.out.println("------------------------");
  13.                  
  14.                 Arrays.sort(arr);
  15.                 for (int i=0;i<arr.length ;i++ )
  16.                 {                                                                                               
  17.                         System.out.println(arr[i]);
  18.                 }
  19.                
  20.         }
  21. }
复制代码
如上代码,编译失败;不知道为什么这种初始化方式不对,难道数组是有固定的初始化方式的?还顺便问一句,char类型的默认初始化值是''吗?和null有什么区别?大家交流交流!

作者: xiaowen_wu    时间: 2015-4-29 23:18
  1. import java.util.Arrays;
  2. class ArrayTest1 {
  3.      public static void main(String[] args) {
  4.           char[] arr =  new char[6];
  5.           arr = {'B','d','c','A','r','t'};
  6.                   /*
  7.                   可以认为:
  8.                                 char[] arr =  new char[6]{'B','d','c','A','r','t'};
  9.                                 这样写编译器会报错,原因在于编译器会认为数组限定的个数[6]
  10.                                 与实际存储的元素{'a','c','d','s','w','q'}个数有可能不一致,
  11.                                 存在一定的安全隐患
  12.                   */
  13.           for (int i=0;i<arr.length ;i++ ) {
  14.               System.out.println(arr[i]);
  15.           }
  16.           System.out.println("------------------------");
  17.                  
  18.           Arrays.sort(arr);
  19.           for (int i=0;i<arr.length ;i++ ) {                                                                                                
  20.               System.out.println(arr[i]);
  21.           }
  22.      }
  23. }
  24. /*
  25.         数组定义的几种格式:
  26.          A:int[] arr = new int[3];
  27.          B:int arr[] = new int[3];
  28.          C:int[] arr = new int[]{1,2,3};
  29.          D:int[] arr = {1,2,3};

  30.          char类型的默认初始化值是:'\u0000'
  31.          引用数据类型的默认初始化是:null,表示变量不引用任何对象

  32. */
复制代码

作者: xiaowen_wu    时间: 2015-4-29 23:19
xiaowen_wu 发表于 2015-4-29 23:18

第十行改为 :与实际存储的元素{'B','d','c','A','r','t'}个数有可能不一致,
作者: 陈明佳    时间: 2015-4-30 09:39
你可以直接写char[] arr={ 'B','d','c','A','r','t'};
作者: Chans_宇    时间: 2015-4-30 10:39
arr={'B','d','c','A','r','t'};这句话使得 char[] arr= new char[6]无意义,它其实是使arr数组变量名指向了另一个新数组,并且会存在2楼说的安全隐患问题,所以是不允许这样引用的,你要么给原数组赋值,要么用新的数组变量指向新生成的数组。
作者: redlake    时间: 2015-5-13 19:35
xiaowen_wu 发表于 2015-4-29 23:18

很详细,谢谢!
作者: YQliang    时间: 2015-5-13 20:45
char[] arr={ 'B','d','c','A','r','t'};才行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2