学习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

浙公网安备 33010602011771号