-------android培训、java培训、期待与您交流! ----------
一、数组的定义
用于存储同一类型数据的一个容器。
好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度]
如:int[] arr = new int[5]
元素类型[] 数组名 = new 元素类型[]{元素,元素,...}
如:int[] arr = new int[]{1,3,5,7};
int[] arr = {1,3,5,7};
二、栈内存和堆内存
栈内存:某一个函数被调用时,这个函数会在栈内存里面申请一片空间,以后在这个函数内部定义的变量,都会分配到这个函数所申请到的栈。当函数运行结束时,分配给函数的栈空间被收回,在这个函数中被定义的变量也随之被释放和消失。
堆内存:通过new产生的数组和对象分配在堆内存中。堆内存中分配的内存,由JVM提供的GC(垃圾回收机制)来管理。
在堆内存中产生了一个数组对象后,我们还可以在栈中定义一个变量,这个栈中变量的取值等于堆中对象的首地址。栈内存中的变量就成了堆内存中数组或者对象的引用变量。我们以后就可以在程序中直接使用栈中的这个变量来访问
我们在堆中分配的数组或者对象,引用变量相当于数组或者对象起的一个别名,或者代号。
三、数组操作常见问题
int[] arr = new int[3];
arr = null;//当引用没有任何指向值且为null的时候,该引用还在用于操作数组,会报NullPointerException异常
System.out.println(arr[3]);//访问到数组中不存在的角标时会报ArrayIndexOutofBoundsException异常
四、数组常见操作
(1)获取数组中的元素,通常会用到遍历,示例:
(2)获取最值
(3)对给定数组的排序
选择排序:
冒泡排序:
折半查找:
查表法(各类进制的转换):
五、数组中的数组(二维数组)
二维数组定义:一维数组作为元素存储到一维数组中