java数组
Java中为了存放一组数据所以引进了数组
一维数组定义的格式
格式1: 数据类型[] 数组名; (推荐用)
格式2: 数据类型 数组名[];
Java一维数组的动态初始化
1.数组必须初始化才可以使用
初始化就是为数组中的数组元素分配内存空间并为每个数组元素赋值
2.动态初始化格式
数据类型[] 数组名=new 数据类型[数组长度];
eg: int[] arr=new int[3];
Java一维数组的内存图解(一个数组)
栈:存储的都是局部变量 局部变量:就是在方法定义中或者方法声明的变量
堆:每一个new出来的东西
堆内存特点:
a.系统会为每一个new出来的东西分配一个内存地址
b.每一个元素都有默认的初始化值
byte,short,int,long ------0
float,double ------0.0
char ------'\u0000'
boolean ------false
引用数据类型 ------null
c.使用完毕以后就变成垃圾,等待垃圾回收器对其回收
方法区
本地方法区:和系统相关
寄存器:CPU
class Demo{
public static void main(String[] args){
int[] arr=new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0AtCVVoB-1605790596293
)(C:\Users\张航\Desktop\2020-11-18_212702.png)]
程序开始运行Demo类的字节码文件加载进入内存,虚拟机主动调用main()方法,main()方法进栈开始执行代码,定义一个int类型数组arr,然后在堆内存里开辟空间给数组arr分配一个地址,并初始化数组arr,然后给每个数组元素赋值。
java一维数组的内存图解(三个数组)
class Demo2{
public static void main(String[] args){
int[] arr=new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
int[] arr2=new int[3];
arr2[0]=4;
arr2[1]=5;
arr2[2]=6;
int[] arr3=arr;
arr3[0]=7;
arr3[1]=8;
arr3[2]=9;
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"、");
}
for(int i=0;i<arr2.length;i++){
System.out.print(arr2[i]+"、");
}
for(int i=0;i<arr3.length;i++){
System.out.print(arr3[i]+"、");
}
}
}
//打印结果是7,8,9,4,5,6,7,8,9结果如果和自己想的不一样看下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PzgpOuJz-1605790596295)(C:\Use
rs\张航\Desktop\Inked2020-11-18_215441_LI.jpg)]
程序开始运行Demo2类的字节码文件加载进入内存,虚拟机主动调用main()方法,main()方法进栈开始执行代码,定义一个int类型的数组arr,在堆里开辟空间给数组arr分配一个地址,并初始化数组arr,然后给数组arr每个元素赋值;定义一个int类型的数组arr2,在堆里开辟空间给数组arr2分配一个地址,并初始化数组arr2,然后给数组arr2每个元素赋值;定义一个int类型的数组arr3将数组arr的地址引用给数组arr3,然后给数组arr3每个元素赋值
java一维数组的静态初始化
静态初始化的格式:
数据类型[] 数组名=new 数据类型[]{元素1,元素2,元素3,....};
简化:数据类型[] 数组名={元素1,元素2,元素3,....};
class Demo{
public static void main(String[] args){
int[] arr=new int[]{1,2,3};//完整格式
int[] arr={1,2,3};//简化格式
}
}
java二维数组(格式1)
二维数组:就是元素为一维数组的数组,这个数组我们就叫做二维数组 数组嵌套
二维数组格式1:
数据类型[][] 变量名=new 数据类型[m][n];
m表示这个二维数组由多少个一维数组 必须写上
n表是每一个一维数组的元素个数 可选
二维数组也可以这样表示(不建议使用)
a.数据类型 数组名[][]=new 数据类型[m][n];
b.数据类型[] 数组名[]=new 数据类型[m][n];
java二维数组的内存图解
class Demo{
public static void main(String[] args){
int[][] arr=new int[2][3];
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
System.out.println(arr[0][0]);
System.out.println(arr[1][0]);
}
}
[外链图片转存失败,源站可能有防盗链机制,建
议将图片保存下来直接上传(img-ShmkPdbQ-1605790596296)(C:\Users\张航\Desktop\2020-11-18_224924.png)]
程序开始运行Demo类的字节码文件加载进入内存,虚拟机主动调用main()方法,main()方法进栈开始执行代码,定义一个int类型的二维数组,然后通过new关键字在堆里开辟空间给数组arr分配一个地址,初始化数组arr2个一维长度,3个二维元素,然后给每个数组arr的元素赋值。
java二维数组(格式2和格式3)
二维数组格式2:
数据类型[][] 变量名=new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态给出
二维数组格式3:
数据类型[][] 变量名=new 数据类型[][]{{元素...},{元素...},{元素...}...};
简化版:数据类型[][] 变量名={{元素...},{元素...},{元素...}...};
class Demo{
public static void main(String[] args){
int[][] arr=new int[2][];
int[][] arr2=new int[3][]{{1,2,3},{2,5},{3,4,5}};
int[][] arr3={{1,2,3},{2,5},{3,4,5}};
}
}
java匿名数组
匿名数组的作用:相对某个集合进行一次操作,而这个集合只被用到一次。
语法: new int[]{元素1,元素2,...};
class Demo{
public static void main(String[] args){
printArr(new int[]{1,2,3});
}
public static void printArr(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}