Java语言中的数组


数组(array)是一种用于存储多个相同类型数据的存储模型。

定义格式

格式1:数据类型[ ] 变量名
例:int[ ] arr
定义了一个int类型的数组,数组名是arr

格式2:数据类型 变量名[ ]
例:int arr[ ]
定义了一个int类型的变量,变量名是arr数组

动态初始化

Java语言中的数组必须初始化后才能使用,数组初始化即为数组中的元素分配内存空间,并为每个元素赋值。

动态初始化:初始化时指定数组长度,由系统为数组分配初始值。
格式:数据类型[ ] 变量名 = new 数据类型 [ 数组长度 ] ;
例:int[ ] arr = new int[5];
int: 说明数组类型为整型
[ ]:说明定义了一个数组
arr:数组名称
new:为数组申请内存空间
int:数组中的元素类型是int类型
5:数组长度,也是数组中元素的个数

元素访问

数组变量访问方式
格式:数组名

数组内部保存的数据的访问方式
格式:数组名[索引]

索引:数组中访问数据的编号方式,用于访问数组中的数据使用。
索引的特征:从0开始,连续,逐一增加,每次加1。

内存分配

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,对空间进行了不同区域的划分,每一块区域都有特定的处理数据方式和内存管理方式。

栈内存:
存储局部变量,即定义在方法中的变量,例如arr,使用完毕,立即消失。

扫描二维码关注公众号,回复: 12607795 查看本文章

堆内存:
存储new出来的内容(实体、对象)。
数组在初始化时,会为存储空间添加默认值,
整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null
每一个new出来的东西都要有一个地址值,使用完毕,会在垃圾回收器空闲时被回收。

静态初始化

静态初始化:初始化时指定每个元素的初始值,由系统决定数组长度。
格式:数据类型[ ] 变量名 = new 数据类型[ ] {数据1,数据2,数据3,……};
例:int [ ] arr = new int[ ]{1, 2, 3};
简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3,……};
例:int[ ] arr = {1, 2, 3};

public class day_005 {
    
    
    public static void main(String[] args){
    
    
        //动态初始化
        int arr1[] = new int[3];
        System.out.println("动态初始化");
        System.out.println("在内存中的地址是:"+arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println("------");
        //静态初始化
        int[] arr2 ={
    
    2,3,4};
        System.out.println("静态初始化");
        System.out.println("在内存中的地址是:"+arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
    }
}

在这里插入图片描述

两个常见问题

1. 索引越界
访问了数组中不存在的索引对应的元素,造成索引越界问题

public class day_005 {
    
    
    public static void main(String[] args) {
    
    
        //动态初始化
        int arr1[] = new int[3];

        System.out.println(arr1[3]);
        System.out.println("------");
    }
}

在这里插入图片描述

2. 空指针异常
访问的数组已经不再指向对内存的数据,造成空指针异常

public class day_005 {
    
    
    public static void main(String[] args) {
    
    
        //动态初始化
        int arr1[] = new int[3];
        
        //null,空值,引用数据类型的默认值,表示不指向任何有效对象
        arr1 = null;
        System.out.println(arr1[1]);
    }
}

在这里插入图片描述

两个常见操作

1. 遍历
格式:
int[ ] arr = {……};
for(int i = 0; i < arr.length; i++){
arr[i] //对arr[i]进行操作
}

public class day_005 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[] arr = {
    
    1, 2, 3};

        //遍历数组
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.println(arr[i]);
        }
    }
}

在这里插入图片描述
其中,arr.length表示获取数组元素数量,也就是数组的长度。


2. 获取最值

//最大值
public class day_005 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[] arr = {
    
    23, 2, 35, 67, 10};

        //定义变量用来保存最值
        int max = arr[0];//取数组中第一个值作为最值的初始值

        //将定义的最值变量与数组中每一个值进行比较,每次都将最大值保存在变量中
        for (int i = 1; i < arr.length; i++) {
    
    
            if (arr[i] > max) {
    
    
                max = arr[i];
            }
        }

        //比较结束后输出最值
        System.out.println("最大值为:" + max);
    }
}

在这里插入图片描述



猜你喜欢

转载自blog.csdn.net/weixin_44892517/article/details/113748934