A、基本概念 定义:同一个类型数据的集合,其实数组就是一个容器。 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。 格式1: 元素类型[ ] 数组名= new 元素类型[ 元素个数或数组长度] 示例:int [ ]arr = new int[3 ]也可以写成:int arr [] = new int[3 ],但一般都按规范来写。 定义一个可以存储3个整数的容器。 int [ ]x = new int[ 3 ]; 格式2: 元素类型[ ] 数组名=new 元素类型[ ] { 元素,元素,……}; 示例: int [ ] arr = new int[ ] {3,5,1,7 }; 也可简化为:int [ ]arr = { 3,5,1,7 }; B、内存结构 前言:java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存管理方式。 栈内存:用于存储局部变量,当数据使用完毕后,所占的空间会被自动释放。 堆内存: *数组和对象,通过new建立的实例都存放在堆内存中。 *每一个实体都有内存地址值 *实体中的变量都有默认的初始化值(例int:0;boolean:false;double:0.0) *实体不在被使用,会在不确定的使劲按内被垃圾回收器回收 另:除了以上两个内存区外,还有方法区、本地方法区、寄存器 实例: classArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; arr=null; System.out.println(arr[3]); } } 在没有arr=null;运行时给出错误提示: Array indexout of bounds exception:3:操作数组时,访问到了数组中不存在的角标。 在有arr=null;运行时给出错误提示: Null pointerexception:空指针异常,当引用没有任何指向值为null的情况,该引用还在用语操作实体。 C 1、数组的常见操作——遍历 获取数组中的元素,通常会用到遍历 classArrayDemo2 { public static void main(String[] args) for(int x=0; x<arr.length; x++) { int[] arr = new int[]{ 3,6,5,1,8,9,67}; System.out.println(“arr[“+x+”]=”+arr[x]+”;”); } } 总结:数组中有一个属性可以直接获取到数组元素的个数:length 使用方式:”数组名称.length” 上面的程序在或许打印元素的取值范围时就有用到。 练习:用于打印数组中的元素int[]arr={ 3,6,5,1,8,9,67};,元素间用逗号隔开 classArrayDemo2 { public static void main(String[] args) { int[]arr={ 3,6,5,1,8,9,67} printArray(arr); } public static void printArray([ ]arr) { System.out.print(“[”) for(int x=0; x<arr.length; x++) { if(x!=arr.length-1) System.out.print(arr[x] + ”,”); else System.out.println(arr[x] + ”]”); } } } 注:再打印数组时,如果直接用“System.out.print(arr)”来进行打印,那么得到的会是该数组空间的16进制的内存地址值。
练习题: 给定一个数组{5,1,6,4,2,8,9} 1、 获取该数组中的最大值和最小值。 思路: a、获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定,通过一个变量进行临时存储。 b、让数组中的每一个元素都和这个变量中的值进行比较,如果大于了变量中的值,就用该变量记录较大值。 c、当所有的元素都比较完成,那么该变量中储存的值就是数组中的最大值了 步骤: a、 定义变量,初始化数组中的任意一个元素即可, b、 通过循环语句对数组进行遍历 c、 在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量: 需要定义一个功能来完成,以便提高复用性。 a、 明确结果,数组中的最大元素 int类型 b、 未知内容:一个数组,int[ ] publicstatic int getMax(int[ ] arr) { int max=arr[ 0 ]; for(intx=1;x<arr.length;x++) { if(arr[x]>max) max = arr[ x ]; } returnmax; } publicstatic void main(String[ ] args) { int[ ] arr={5,1,6,4,2,8,9}}; int max = getMax(arr); System.out.println(“max=”+max); } |