A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© redlake 中级黑马   /  2015-4-29 22:39  /  484 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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有什么区别?大家交流交流!

6 个回复

倒序浏览
  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. */
复制代码
回复 使用道具 举报

第十行改为 :与实际存储的元素{'B','d','c','A','r','t'}个数有可能不一致,
回复 使用道具 举报
你可以直接写char[] arr={ 'B','d','c','A','r','t'};
回复 使用道具 举报
arr={'B','d','c','A','r','t'};这句话使得 char[] arr= new char[6]无意义,它其实是使arr数组变量名指向了另一个新数组,并且会存在2楼说的安全隐患问题,所以是不允许这样引用的,你要么给原数组赋值,要么用新的数组变量指向新生成的数组。
回复 使用道具 举报

很详细,谢谢!
回复 使用道具 举报
char[] arr={ 'B','d','c','A','r','t'};才行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马