第一章:基本概念
1.1基本性质
1.数组是同一种类型数据的集合;即能够存放多个相同类型的数据的容器。
2.Java中,数组是一种引用类型,存储在堆中,父类为Object,一旦被创建长度是不可变的,元素类型必须统一。
3.数组可以存储基本数据类型和引用数据类型的数据
4.数组中如果存的是Java对象的话,实际存储的是对象的引用(内存地址)。
5.数组分类:一维、二维、多维……。
6.所有的数组对象都有length属性,用于获取长度。
7.数组在内存方面存储时,数组中的元素内存地址是连续的
8.所有数组都是以第一个元素内存地址作为整个数组内存地址
9.下标从0开始,最后一个元素下标为length-1.
2.1 数组的优缺点
优点:检查某个下表上元素时效率高。
为什么检查效率高?
1.每一个元素内存地址空间上是连续的
2.每个元素类型相同所占空间大小一样
3.知道了元素内存地址,占空间大小,下标,可以计算元素的位置。
缺点:
1.由于数组每个元素内存地址连续,随机增删改效率太低。
2.数组不能存储大数据量,因为数组空间上很难找到一块大的内存空间。
第二章:一维数组
1.1基本语法
初始化一维数组:
静态初始化:int[] arry1={1,100,200};
动态初始化:int[] arrys=new int[5]; //初始化一个长度为5的int类型数组,每个元素值为0
(默认).
String[] arrys=new String[6]; //初始化一个长度为6的String类型的数组,每个元素默认值为:null
代码演示:
int[] arr = new int[3]; arr[0] = 3; //给数组编号(角标)为0的空间中存放int类型的常量值3 System.out.println(arr[1]);//输出数组编号为1空间中的值。
public class Text{ public static void main(String[] args) { //初始化一个静态类型的数组 int[] arr1={2,5,8,9,6,}; //访问第3个元素 System.out.println(arr1[2]); } }
一维数组的遍历:
public class Text{ public static void main(String[] args) { //初始化一个静态类型的数组 int[] arr1={2,5,8,9,6,}; //遍历输出一维数组中的元素 for (int i=0;i<arr1.length;i++){ System.out.println(arr1[i]); } } }
第三章:二维数组
1.1基本特性
1.二维数组是特殊的一维数组,二维数组中每个元素为一维数组。
2.二维数组初始化:
静态初始化: int[][] arry={{1,2,3},{1,2,3},{1,2,3}}
int[][] arr=new int[2][3]; arr[0][0]=11;
动态初始化:int[][] arrys=new int[2][3]; //初始化一个两行三列的二维数组
public class Text{ public static void main(String[] args) { //初始化一个静态类型的二维数组 int[][] arr1={{1,2,3},{1,2,3},{2,3,1}}; //输出第1行第3列的元素 System.out.println(arr1[0][2]); } }
二维数组遍历:
public class Text{ public static void main(String[] args) { //初始化一个静态类型的二维数组 int[][] arr1={{1,2,3},{1,2,3},{2,3,1}}; //遍历输出二维数组中的元素 for (int i=0;i<arr1.length;i++){ for(int j=0;j<arr1[i].length;j++){ System.out.print(arr1[i][j]);//第i个一维数组中第j个元素 } } } }
第四章:数组常见异常总结
1.1数组角标越界异常
public class Demo10 { public static void main(String[] args) { int arr[] = new int[3]; System.out.println(arr[3]); } }
2.1数组空指针异常
public class Demo10 { public static void main(String[] args) { int arr[] = new int[3]; //System.out.println(arr[3]); arr = null; System.out.println(arr[3]); } }
数组工具类:Arrys.sort();//排序
Arrys.binarySearch();//二分查找
第五章:简单练习
1.数组求和
public class Demo01 { public static int getSum(int []nums){ int res = 0;// 求和结果 int length = nums.length;// 获取长度 for (int i =0;i<length;i++){ res += nums[i]; } return res; } // 数据类型... 形式参数 可变长度参数 就是数组 /* public static int getSum1(int... nums){ int res = 0;// 求和结果 int length = nums.length;// 获取长度 for (int i =0;i<length;i++){ res += nums[i]; } return res; }*/ public static void main(String[] args) { int nums[] = {23,17,40,20}; int sum = getSum(nums); System.out.println("数组的求和结果:"+sum); } }
2.求最值
public class Demo02 { /** * 求数组最大值 * @param nums * @return */ public static int getMax(int nums[]){ int max = nums[0];// 默认最大值为第一个元素 for (int i = 1;i<nums.length;i++){// 遍历数组的每一位 if (max<nums[i]){// 判断当前为是否比max大 max = nums[i];// 用大值替换max值 } } return max; } public static void main(String[] args) { int nums[] = {7,23,44,16,32,99,34,13}; Arrays.sort(nums); //int max = getMaxIndex(nums); //System.out.println("最大值是:"+max); System.out.println(Arrays.toString(nums)); System.out.println(nums[nums.length-1]); } }