Java基础04: 数组

本文详细介绍了Java中的数组,包括其定义、初始化、特点、动态与静态初始化的区别。此外,还讲解了如何获取数组长度、元素以及通过索引操作数组。同时,提到了数组遍历的方法,并分析了两个常见的异常问题:数组索引越界和空指针异常。最后,探讨了数组在内存中的存储方式。
摘要由CSDN通过智能技术生成

一 数组的介绍及定义

1.概述:容器
2.作用:存储数据
3.特点:
a.定长
b.既能存储基本数据类型还能存储引用数据类型
4.定义格式:
动态初始化:数据类型[] 变量名 = new 数据类型[数组的长度]
数据类型 变量名[] = new 数据类型[数组的长度]
静态初始化:数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3}
简化静态初始化:数据类型[] 变量名 = {元素1,元素2,元素3}
5.动态初始化各部分解释:
数据类型:数组只能存储什么类型的元素
[]:代表的数组
变量名:随便
new:创建数组
数据类型:和等号左边的数据类型一致
[数组的长度]:数组最多能存多少个数据(元素)
6.问题:啥时候用动态初始化,啥时候用静态初始化
动态:当定义的时候还不知道存储啥元素,后续才会确定存啥元素
静态:当定义的时候就已经知道存储啥元素了

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

        String[] arr2 = new String[4];
        
        //静态初始化
        
        int[] arr3 = {1,2,3,4,5};
        
        String[] arr4 = {"金莲","柳岩","大郎","武二郎"};
    }
}

二 数组的操作

1 获取数组的长度

/*
1.数组中有一个属性:length
2.格式:数组名.length  */
public class Array02 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        int len = arr.length;
        System.out.println(len);

        System.out.println("==================");

        //静态初始化
        String[] arr1 = {"樱桃小丸子","飞天小女警","百变小樱魔术卡","巴啦啦小魔仙","熊出没"};

        System.out.println(arr1.length);
    }
}

2 索引

1.概述:代表的是元素在数组中存储的位置
2.特点:
从0开始
最大索引为:数组长度-1
索引唯一的

3 获取元素

1.格式: 数组名[索引值]
2.数组定义出来是有默认值的
整数:0
小数:0.0
字符:’\u0000’
布尔:false
引用:null

public class Array03 {
    public static void main(String[] args) {
        //此处输出的默认值
        String[] arr1 = new String[10];
        System.out.println(arr1[0]);

        int[] arr2 = new int[10];
        System.out.println(arr2[0]);

        System.out.println("========================");

        //静态初始化
        String[] arr3 = {"如来佛祖","燃灯佛祖","东来佛祖","斗战胜佛","旃檀功德佛","南无大圣舍利尊王佛"};

        //获取索引3上的元素
        String element = arr3[3];
        System.out.println(element);

        //获取索引4上的元素
        System.out.println(arr3[4]);

        //获取数组中最后一个元素
       // String element1 = arr3[5] ;

        //获取最大索引
        /*int index = arr3.length-1;//5
        String element1 = arr3[index] ;*/
        String element1 = arr3[arr3.length-1] ;
        System.out.println(element1);
    }
}

4 存储索引

1.存储元素:数组名[索引值] = 元素值
2.总结:
数组名[索引值]在等号的右边就是获取元素
数组名[索引值]在等号的左边就是存储元素

public class Array04 {
    public static void main(String[] args) {
        //动态初始化
        int[] arr = new int[3];
        //存储元素
        arr[0] = 100;
        arr[1] = 200;
        arr[2] = 300;

        //获取元素
        int element1 = arr[0];
        int element2 = arr[1];
        int element3 = arr[2];

        System.out.println(element1);
        System.out.println(element2);
        System.out.println(element3);

        System.out.println("=======================");

        int[] arr1 = new int[3];


        /*
          先看等号右边的,数组名[索引值]在右边,是先获取元素

          再看等号左边的,数组名[索引值]在左边,是存储元素

          所以下面的代码是先获取元素,存储到对应的索引上
          
          将arr数组0索引上的元素存储到了arr1数组的0索引位置上
         */
        arr1[0] = arr[0];
        System.out.println(arr1[0]);

    }
}

5 遍历数组

1.数组的遍历:循环的将数组中的元素获取出来
2.遍历数组的快捷键:数组名.fori

public class Array05 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4};
        int element0 = arr[0];
        int element1 = arr[1];
        int element2 = arr[2];
        int element3 = arr[3];

        System.out.println(element0);
        System.out.println(element1);
        System.out.println(element2);
        System.out.println(element3);

        System.out.println("==============================");

        for (int i = 0;i<4;i++){
            System.out.println(arr[i]);
        }

        System.out.println("==============================");

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

三 操作数组时两个常见的异常问题

1 数组索引越界异常->ArrayIndexOutOfBoundsException

出现原因:操作的索引超出了数组的最大索引

public class Array06 {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = new int[5];
        arr[0] = 100;
        arr[1] = 200;
        arr[2] = 300;
        arr[3] = 400;
        arr[4] = 500;
        /*
          数组长度为5,最大索引是4,现在我们操作的是5索引
          超过了我们数组的索引范围,所以有了异常
          ArrayIndexOutOfBoundsException
        */
        arr[5] = 600;
    }
}

在这里插入图片描述

2 空指针异常->NullPointerException

出现的原因:引用为null时还继续使用

public class Array07 {
    public static void main(String[] args) {
        String[] arr = null;
        System.out.println(arr.length);
    }
}

在这里插入图片描述

四 内存

在这里插入图片描述

1 一个数组的内存存储

public class Array09 {
    public static void main(String[] args) {
        int[] arr = new int[3];
        System.out.println(arr);//地址值
        arr[2] = 100;
        System.out.println(arr[1]);//0
        System.out.println(arr[2]);//100
    }
}

在这里插入图片描述

2 两个数组的内存存储

public class Array10 {
    public static void main(String[] args) {
        int[] arrA = new int[3];
        System.out.println(arrA);//地址值
        arrA[2] = 100;
        System.out.println(arrA[2]);//100

        int[] arrB = new int[3];
        System.out.println(arrB);//地址值
        arrB[2] = 200;
        System.out.println(arrB[2]);//200
    }
}

在这里插入图片描述

3 两个数组指向同一片内存空间的存储

public class Array10 {
   public class Array10 {
    public static void main(String[] args) {
        int[] arrA = new int[3];
        System.out.println(arrA);//地址值
        arrA[2] = 100;
        System.out.println(arrA[2]);//100

        int[] arrB = arrA;
        System.out.println(arrB);//地址值
        arrB[2] = 200;
        System.out.println(arrB[2]);//200
        System.out.println(arrA[2]);//200
    }
}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值