4月初来到黑马,转眼半个月的基础班学习即将结束。下面总结了一些关于数组的基本知识。 概念 数组是Java语言的基本知识之一,是存储同一种数据类型的多个元素的容器。 定义格式及初始化定义格式 a.数据类型[] 数组名;int[] arr 这种方式用的比较多 b .数据类型 数组名[]; int arr[] 推荐用a方式,但是b方式要看得懂 解释:a是定义一个int类型的数组,数组名是arr b是定一个int类型的变量,变量名arr[ ]数组 数组的初始化 a、动态初始化 只给长度,系统会给出默认值 举例: int[] arr = new int[3]; b、静态初始化 给出值,系统决定长度 举例:int[] arr =new int[] {1,2,3}; 简化 int[] = {1,2,3}; 总结:所谓数组初始化,就是为数组开辟内存空间,并为 数组的每个元素赋予初始值。 new:在右边为数组申请内存分配开辟空间 使用数组容易发生的问题 A:ArryIndeoutofboundsExcption:数组索引越界异常 原因:你访问了不存在的索引,超过其数组长度了 B:NullPointerException:空指针异常 arr =null System.out.println(arr[0]); 原因:数组已经不在指向堆内存了,而你还用数组名访 问元素。 数组长度属性为了解决我们去解决数组元素的个数,数组就提供了一个属性:length 用于获取数组元素的个数 格式:数组名.length int[] arr; System.out.println("数组共有"+"arr.length"+"个") 数组中的遍历、最值、逆序、基本查找遍历:方式1: public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } 方式2: public static void printArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x == arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.println(arr[x]+", "); } } } 注释:方式2美观些 注意最后结尾的判断条件 最值:最大值: public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } return max; } 最小值: public static int getMin(int[] arr) { int min = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] < min) { min = arr[x]; } } return min; } 逆序方式1: public static void reverse(int[] arr) { for(int x=0; x<arr.length/2; x++) { int temp = arr[x]; arr[x] = arr[arr.length-1-x]; arr[arr.length-1-x] = temp; } } 方式2: public static void reverse(int[] arr) { for(int start=0,end=arr.length-1; start<=end; start++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } 基本查找方式1: public static int getIndex(int[] arr,int value) { for(int x=0; x<arr.length; x++) { if(arr[x] == value) { return x; } } return -1;/数组中无此元素 } 方式2: public static int getIndex(int[] arr,int value) { int index = -1; for(int x=0; x<arr.length; x++) { if(arr[x] == value) { index = x; break; } } return index; }
|