1、数组初始化
数组初始化分为动态初始化(指定长度)和静态初始化(指定内容);
动态初始化格式:int[] num = new int[3];这时元素会自动拥有默认值,规则如下:整数类型(0)、浮点类型(0.0)、字符类型(‘\u0000’)、布尔类型(false)、引用类型(null)。
静态初始化格式:int[] num = new int[] {1,2,3};或者int[] num = {1,2,3};静态初始化也有默认值的过程,只不过系统自动马上将默认值替换为大括号里面的具体数值。
数组必须进行new初始化才能使用其中的元素,如果只是赋值了一个null,没有进行new创建,会发生空指针异常。
数组一旦创建,程序运行期间,长度不可改变。如果要在运行期间扩展数组大小,需要用到数组列表(array list)。
2、java的内存划分
3、数组所在内存
int[] num = new int[3];是将new出来在堆内存的数组的地址值,赋值给栈内存中的num变量。数组作为方法的参数时,向方法的小括号进行传参,传递进去的就是数组的地址值。
4、数组的遍历
①for each循环:for(变量类型 变量:collection) satatment;
其中,collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象。
②传统的for循环:for(int i=0;i<num.length;i++);
③利用Arrays类的toString方法。
5、数组拷贝与排序
①Arrays类的copyof方法可以将一个数组的全部值拷贝到一个新的数组中:
int[] nums1 = {1, 2, 3, 4};
int[] nums2 = Arrays.copyOf(nums1, nums1.length);
也可以用来增加数组的大小:nums1 = Arrays.copyOf(nums1, 2*nums1.length);
②另一种方法System.arraycopy(src, srcPos, dest, destPos, length);其中src是源数组,srcPos是源数组的起始位置,dest是目标数组,destPos是目标数组的起始位置,length是拷贝长度。
③所有数组类型都有一个public的clone方法。可以用这个方法建立一个新数组,包含原数组所有元素。
④排序使用Arrays类的sort方法即可。