数组
1.概念
存储多个相同类型元素的容器
2.数组的定义
1.数据类型[] 数组名=new 数据类型[数组长度/元素个数]
int[] arr =new int[];//定义出长度为3的整形数组arr(指定长度)
分为声明和初始化俩个过程,通过数组的地址值可以找到对应的数组容器,数组内部自动对存储的元素进行编号(从0开始),通过数组地址值和元素编号就可以唯一确定数组中的元素---数组名[编号](编号---下标)
2.数据类型[] 数组名=new 数据类型[]{元素值1,元素值2,……};
int[] arr=new int[]{1,2,3};//给定元素值,长度已经确定,前面不能再指定长度值
支持分为声明和初始化俩个过程:
声明:int[] arr;
初始化:arr=new int[]{1,2,3};
3.数据类型[] 数组名={元素值1,元素值2,……};
int[] arr={1,2,3};//给定元素值,长度已经确定
new关键字—在内存开辟新空间
数组内存地址值[|@659e0bfd:↓↓↓
/*
数组的定义格式
*/
class ArrayDemo{ public static void main(String[] args) {
//1.定义格式
int[] arr=new int[2];
//给数组的第二个元素进行赋值
arr[1]=10;
//声明
int[] arr1;
//初始化
arr1=new int[3];
//输出数组名---数组地址值
System.out.println(arr);//[|@659e0bfd
//输出数组的第二个元素的值
System.out.println(arr[1]);
//2.定义格式
int[] arr=new int[]{1,2,3};
//声明
int[] arr1;
//初始化
arr1=new int[]{3,5};*/
//3.定义格式
//底层会自动开辟空间可以存储数据
int[] arr={1,2,3};
//声明
int[] arr1;
//初始化
//底层没有开辟空间所以不能存储数据
arr1={5,6};//编译出错
}
}
3.java内存分区(特别重要)
栈:存储变量(暂时),栈中存储的数据使用完毕时立刻销毁
堆:存储对象,存储的对象如果不再使用会在某个时刻通过系统进行回收方法区(面向对象讲)
系统默认初始值
(byte、short、int---0)、(char---'\u0000' \u代表编码使用的码表是utf-16)、(long---0L)、(float---0.0F)、(double---0.0)、(boolean---false)、(所有引用类数据型---null)
int[] arr =new int[3]:栈堆图↓
4.数组的应用
数组的遍历
遍历—依次输出数组元素值 数组名[下标]—确定任意数组元素(for循环、增强for循环、Arrays.toString(arr))
/*
数组遍历
*/
import java.util.Arrays;
class ArrayBianLiDemo{
public static void main(String[] args) {
//给定数组
int[] arr={1,7,9,3,6,2};
//通过普通for循环遍历数组元素
//数组长度---数组名.length
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
arr[i]+=2;
}
//增强for循环
//(元素类型变量名:遍历的数组的名称)
//把数组元素的值拷贝到变量身上
for(int i:arr){
//System.out.println(i);
i+=2;
}
for(int i:arr){
System.out.println(i);
}
//自动把数组元素内容进行拼接,拼接成一个字符串输出(展示结果)
System.out.println(Arrays.toString(arr));
}
}
求出数组元素中的最大值/最小值
/*
最值
*/
class ArrayMax{
public static void main(String[] args) {
int[] arr={3,5,7,2,9,1};
//提供参照物---默认选第一个元素
int max=arr[0];
//for循环---依次比较
for(int i=1;i<arr.length;i++){
//和所有的元素进行比较
if(max<arr[i]){
//把较大的元素值赋值给max
max=arr[i];
}
}
System.out.println(max);
}
}
选择排序
冒泡排序
二分(折半查找)
数组扩容
5.二维数组
存储的数组元素是一维数组的数组
定义格式
1.数据类型[][] 数组名=new 数据类型[二维数组长度][一维数组长度];
int[][] arr=new int[3][2];//定义3个长度为2的一维数组 指定长度
2.数据类型[][] 数组名=new 数据类型[二维数组长度][];
int[][] arr=new int[3][];//代表声明了3个一维数组
//给定初始值
arr[0]=new int[3];//可以 arr[1]=new int[]{1,2,3,4};//可以
arr[2]={4,5,6};//不可以
3.数据类型[][] 数组名={{元素值1,元素值2,…},{元素值1,元素值2,…}
,{元素值1,元素值2,…},…};
int[][] arr={{1,2},{3,4,5}};//指定值确定长度
二维数组内存图