数组
什么是数组
一种用于存储多个相同类型数据的存储模型
数组的定义
数组定义的三种基本语法格式:
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
new:为数组申请内存空间
数组类型[] 数组名=new 数组类型[数组长度]
例如 int [] arr=new int[3];
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
数组类型[] 数组名=new 数组类型[]{数组元素0,数组元素1,.....};
例如 int [] arr = new int []{1,2,3};
静态初始化简化格式
数组类型[] 数组名={数组元素0,数组元素1,.....};
例如 int [] arr = {1,2,3};
数组元素访问
数组变量访问方式
格式:数组名
数组内部保存的数据的访问方式
格式:数组名[索引]
索引是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征1:索引从0开始
特征2:索引是连续的
特征3:索引逐一增加,每次加1
Java中内存分配
栈内存:存储局部变量
定义在方法中的变量,例如:arr 使用完毕立即消失
堆内存:存储new出来的内容(实体,对象),数组在初始化时会默认为空间添加默认值
整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null
每一个new出来的对象都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
数组常见操作
数组遍历
public static void main(String[] args){
//定义一个数组
int[] arr= {1,2,3,4,5};
//所有for循环遍历数组的元素
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
数组最值
public static void main(String[] args) {
//定义一个数组
int[] arr= {1,8,6,9,4,10,8};
//定义一个max来存储最大值,首先假设第一个值为最大值
int max=arr[0];
//遍历数组,查找最大值
for (int i=1;i< arr.length;i++){
//比较arr[i]是否大于max
if (arr[i]>max){
//将arr[i]值赋给max
max=arr[i];
}
}
System.out.println("最大值为"+max);
}
数组排序(常见冒泡排序)
冒泡排序:不断的比较数组中相邻的两个元素,较小着向上浮,较大的往下沉。
public static void main(String[] args) {
int[] arr={5,9,6,2,4,7,9,1};
//冒泡排序前,先循环打印数组元素
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println(" "); //用于换行
//外层循环定义需要比较的轮数
for (int i=1;i<arr.length;i++){
//内存循环定义第i轮需要比较的两个数
for (int j=0;j<arr.length-i;j++){
//比较相邻元素
if (arr[j]>arr[j+1]){
//下面3行代码用于两个元素位置交换
int temp=arr[j]; //将arr[j]的值赋给temp
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
}
多维数组
多维数组可以简单理解为在数组中嵌套数组。其定义方式如下:
1.定义一个3*4的数组,二维长度为3,二维数组中的每个一维数组长度为4
int[][] arr=new int[3][4];
2.指指定二维数组的长度,不确定每个数组的元素个数,语法格式如下:
int[][] arr= new int[3][];
3.直接使用嵌套大括号'{}',对二维数组进行初始化赋值,语法格式如下:
int[] [] arr={(1,2),(3,4,5),(7,8,9)};
多维数组中对元素的操作
通过对角标的方式来完成,具体示例代码如下:
arr[0] [1]; //获取二维数组中第一个元素组的第二个元素
arr[0] [1]=1; //对二维数组中的第一个元素组的第二个元素赋值或修改