数组的目的:用于存放多个类型相同的变量
一、
1.数组初始化(动态初始化)
初始化时只指定数组的长度,初始值由系统自动分配
int[] a=new int[3];
/*
说明:
=左边:(在栈内存中:存储局部变量,使用完立即消失)
int:说明数据类型为int类型
[]:说明是数组
a:数组名字
=右边:(在堆内存中:存储new出来的内容,在初始化时会为存储空间添加默认值)
new:分配内存空间
int:说明数据类型为int类型
[]:说明是数组
3:数组的长度
*/
多个数组指向相同
//多个数组指向相同的地址
int[] a1=new int[2];
a1[0]=100;
a1[1]=200;
System.out.println(a1[0]);
System.out.println(a1[1]);
System.out.println("----------");
int[] a2=a1;//a2指向a1的堆空间中的地址
a2[0]=111;
a2[1]=222;
System.out.println(a1[0]);//原来的a1数组中的值也已经改变
System.out.println(a1[1]);
System.out.println(a2[0]);
System.out.println(a2[1]);
//结论:当两个数组指向相同,任何一个数组修改堆内存的数据,另一个数组去访问的时候也是发生了改变的
*/
2.数组初始化(静态初始化)
初始化时指定数组的初始值,长度由系统自动分配
int[] a=new int[]{1,2,3};
或者:
int[] a={1,2,3};
二、数组中常出现的问题
1.索引越界
int[] a1=new int[3];//长度为3的数组索引依次为0,1,2
System.out.println(a1[3]);//索引超过了数组索引的长度
2.空指针异常
a=null;//改变了栈内存中的a的地址为null
System.out.println(a[0]);//不能通过a找到堆内存中的地址
三、数组中的常见操作
1.遍历
for(int i=0;i<a.length;i++)//注意这里使用a.lenght得到数组a的长度
System.out.println(a[i]);
2.求最值
int max=0;
for(int i=0;i<a.length;i++)
if(a[i]>max)
max=a[i];
System.out.println(max);//输出最大值