Java 数组

申明及初始化

  • 申明方式及初始化方式
数组的申明及初始化
 
int[] arr = new int[5]; int arr[1] = 3;
 
int[] arr = {1,2,3,4};
 
/*不允许分开写,下面是错误的
   
     int[] arr;
    arr={1,2,3,4}
*/
 
int[] arr = new int[]{1,2,3,4}; //注意右边不需要指明长度
 
//允许这样写
 
int[] arr;
arr = new int[]{1,2,3,4} 
  • 注意点
    • 数组是不能指定长度的
int[] nums = new int[4];
 
 
其中 int[] nums里的[]里面不能填入数字
 
所谓的数组长度其实是一个误区,new int[4]开辟了一个 4*4的内存块,这里才是长度,但这是内存的长度
 
nums所做的只是获取这个内存的引用,即获取这块内存的位置
 
所以说数组是无法指定长度的
  • 数组会自动初始化

        整型为0,boolean为false,字符型&字符串型为""(unicode的0),object为null

  • 引用数组元素会初始化为null,所以在使用之前要创建对象并将引用赋值给元素,否则会出现空指向异常
Integer[]  integers = new Integer[10];


这时候nums里面的元素指向是null

一旦元素进行运算就会发生java.lang.NullPointerException错误

eg:System.out.println(integers[0]+1);


需要重新给元素赋值 eg:a[0] = new Integer(1);

但如果只对其进行访问并不报错 
eg:System.out.println(integers[0]);
结果:null

注意:这里因为integer[0]是integer包装类,所以如果里面有值,可以直接如上例输出
     但如果引用数组里面的是普通类,就会如普通类一般输出引用地址
eg:            Test[] tests = new Test[10];
		tests[0] = new Test(null);
		System.out.println(tests[0]);
结果:Day06.Test@383534aa


此外,引用数组如果只申明没有进行赋值,该元素(对象)因为指向为null,没有获取到内存的引用,
所以是不会执行析构函数的。



Object[] object =  new Object[5];
object.num = 4;//这是错误的
object[0]里面是null的,会出现空指针异常

 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务