程序 = 算法 + 数据结构
算法 :解决程序的流程步骤
数据结构 : 将数据按照某种特定的结构存储
数组是最简单的数据结构,是存放同一类型数据的集合,在内存中开辟一块连续的内存空间
1.数组的定义:三种方式,其中arr1和arr2最常用
其中arr1表示申请一个大小为5个int数据类型大小的连续内存空间,即申请空间
arr2表示直接申请空间并对空间进行赋值,即初始化
arr3表示匿名数组方式,不需要定义名称,用于这个数组只使用一次的情况
int[] arr1 = new int[5];
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = new int[]{1, 2, 3};
//匿名数组方法
System.out.println(Arrays.toString(new int[]{1 , 2 ,3}));
2.数组的访问:下标,大小和下标不同
定义数组时传入的数据是数组的大小,即数组的长度,可以通过arr.length获取,这个是数组的一个属性,是不是方法,可以直接通过属性获取定义的大小
数组的下标是从0开始的,即如果定义int[] arr = new int[3];下标就是arr[0],arr[1],arr[2],没有arr[3]这样会报异常,因为arr[3]的位置没有申请空间,会出现数组越界异常
java.lang.Array Index OutOf Bounds Exception: 4
数组超过了本身的界限,所以要注意分界点
定义并初始化数组后就可以通过下标获取到每个地方存储的数据
3.数组的遍历
有了之前学习的循环,又有了数组的存储方式,我们就可以对数组进行操作了,其中最简单频繁的操作就是遍历,比如查找
遍历是最简单的边界问题,程序员最常用的就是第一种,从0开始到arr.length - 1,也可以是第二种,第二种的话i是符合普通人的理解的,但是i和下标就不相对了,i要对应i - 1下标
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
//对数组进行遍历或者
for(int i = 1; i <= arr.length; i++){
System.out.println(arr[i - 1]);
}
4.二维数组
二维数组是指一维数组里面存放的数据是个数组
即一维数组里面存放的是地址,数据都存放在好多个连续地址中
本段代码首先定义一个二维数组,其中arr[0],这个地址存放的是第一行数据,arr[1]地址存放的是第二行数据,以此类推,真正存放数据的是arr[0][0]这些一维数组下的下标
int[][] arr = {{1 , 2 , 3} , { 2 , 3} , {1}};
System.out.println(arr[0]);//[I@677327b6
System.out.println(arr[1]);//[I@14ae5a5
System.out.println(arr[2]);//[I@7f31245a
System.out.println(arr[0][0]);//1
System.out.println(arr[1][1]);//3
由于二维数组不是真正的二维数组,而是一维数组中存放一个数组实现的,这个数组的大小不确定,多大都可以,所以在Java中二维数组的存储每行的个数不一定相等