学习JAVA之数组小结

我是一个正在学习JAVA的大三计科的一个学生,写这个小结是为了加深对知识点的理解,以及便于日后的复习,若有什么理解不正确的地方或者一些便于理解的小技巧,希望大神们可以指点,先在谢谢了。

下面步入正题:

数组的特点:  ①数组元素的类型是唯一的。②数组初始化完成,内存所分配给它的空间会被固定,长度不可改变。③数组是一种数据类型(引用类型)。

数组的定义:  ①type[] arrayName; ②type arrayName[]  (推荐第一种,有更好的可读性,也有一定的时代性)   注意:数组的定义仅仅定义了一个引用变量,还没有指向有效的内存空间,因此定义的时候不能指定数组的长度,也就是说现在还没有内存空间来存储数组元素,所以数组只有初始化后才能使用。 

数组的初始化:就是给数组元素分配内存空间,并赋初值。

    初始化语法:①静态初始化:  arrayName = new type[]{element1,element2,...} 例:int Arr = new int[]{1,2,3,4}    ②动态初始化:arrayName = new type[length];  例:int[] prices = new int[5];

                         对于数组的定义和初始化,定义就是在内存的栈空间分配一个单元,里面是一个地址,这个地址指向,初始化就是在内存的堆空间区域,分配一个长度为length的空间,栈单元的地址指向这个堆空间。

   注意点:例: int[] a = {1,2,3};           //a.length = 3; 这里的a就是被存放栈空间中的一个单元,里面是一个地址。

       int[] b = new int[4];      //b.length = 4;这里的b就是被存放栈空间中的一个单元,里面是一个地址。此时b[0] = 1;

                          b = a;                        //将a指向的那个地址给b ,此时 b[0] = 1,b.length = 3.这就造成了数组长度改变的假象。因为数组是引用类型,并不是说此时b的数组长度改变了,而是数组b指向了在a数组在堆空间里面所分配的单元,而原先分配给b的堆空间内存单元将被当作垃圾等待垃圾回收机制回收    

遍历数组foreach循环: 例: int Arr = new int[]{1,2,3,4};

                                                for(int arr : Arr) { System.out.println(arr);}   //此时就能循环输出Arr数组中的每一个元素了。好处:不用获得数组长度,不用循环条件。注意点:不要在foreach循环中赋值,而且foreach中的循环变量相当于一个临时变量,并不是数组元素本身,它只是暂时保存了数组元素的值。

运行时数组容易出现的异常(数组索引异常):java.lang.ArrayIndexOutOfBoundsException:N

 

 

posted @ 2017-10-20 21:47  DemmonTree  Views(811)  Comments(0)    收藏  举报