数组:
数组是一种数据类型的集合容器
数组的定义格式:
数据类型[] 变量名 =new 数据类型[长度];
int [] arr=new int[50];
数组的初始化方式:
1.动态初始化
数据类型[] 变量名 =new 数据类型[长度];
2.静态初始化:
数据类型[] 变量名 ={元素1,元素2,…}
数组的好处:
对分配到数组中对象中每一个数据都分配一个编号(索引值、角标、下标)索引值的范围是从0开始,最大值是长度-1.
分析数组 int[] arr=new int[4]的内存图:
1.栈内存的特点:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么马上从内存中消失,释放内存空间。
2.堆内存的特点:堆内存存储的都是对象数据,对象一旦被被使用完,并不会马上在内存中消失,而是等垃圾回收器不定时把垃圾对象回收,这时候对象才会消失,释放内存。
对象如果没有变量引用了,那么该对象就是一个垃圾对象了。
3.凡是以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的对象。
4.局部变量:如果声明一个变量是在一个方法内声明的,那么该变量就是一个局部变5.量成员变量:成员变量是定义在方法之外,类之内。
int[] arr=new int[4];
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
//查看数组中所有的数据
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
数组中常见的问题:
1.NullPointException:控制住异常
原因:引用类型变量没有指向任何变量,而访问了对象的属性或者是调用了对象的方法
int[] arr=new int[2];
arr=null;//null是让该变量不要引用任何对象,不要记录任何的内存地址
垃圾对象:没有引用任何变量多指向的对象就是垃圾对象。
2.ArrayIndexOutOfBoundsException:索引值越界
原因:访问了不存在的索引值
int[] arr=new int[4];
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
System.out.println(arr[4]);
练习:定义一个函数,接受一个int类型的数组对象,找出数组中的最大值返回给函数的调用者
public class Test6 {
public static int getMax(int[]arr){
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
return max;
}
public static void main(String[] args) {
int[] arr={10,20,56,40};
int result=getMax(arr);
System.out.println("在这个数组中,最大值为:"+result);
}
}