【java一维数组总结(you only look once)】

数组的定义

java中的数组是在连续内存空间中的一种存储相同类型数据的数据结构。为了批量管理相同类型的数据,java引入了数组,数组的格式为:数据类型[],如:int[]String[]等等。正因为在内存分配是连续的空间,所以数组长度是不可变的。

数组的创建

当我们了解了数组是什么东西之后,当我们想要使用数组时应该怎么创建一个数组呢?下面是数组的两种创建方式(以整型数组为例):

静态创建

静态创建数组的语法为: 数据类型[] 变量名 = {数据};。其中数据之间用逗号隔开。

int[] arr = {1,2,3,4,5};

动态创建

动态创建有两种写法:
一种为数据类型[] 变量名 = new int[数组长度];创建一个长度为5的数组,并默认初始化为0。

int[] arr2 = new int[5];

另一种方式为数据类型[] 变量名 = new int[]{数据};创建一个长度自适应的数组,并将它初始化。

int[] arr3 = new int[]{1,2,3,4,5};

静态创建数组和动态创建数组的区别:静态创建数组时必须初始化值,数组长度根据输入数据的个数计算。而动态创建数组(如arr2)不必初始化,只需指定长度,默认初始化为0。

数组的常用操作

1、访问

  • 通过arr[2]访问数组 arr 索引为 2 的值。

2、修改

  • 通过arr[i] = 10;将数组 arr 索引为 i 的值覆盖为10。

3、遍历

  • 由于创建的数组是一个对象,所以直接输出的话会调用基类Object中默认的toString方法,返回该对象的地址,如System.out.println(arr);的输出为
    在这里插入图片描述
    这时我们就要借助官方提供的方法(Arrays.toString)来帮助我们遍历数组,System.out.println(Arrays.toString(arr));,结果如下
    在这里插入图片描述
    这样前面就能清楚的看见数组的内容了。

4、扩容

  • 到这有的同学可能要问了,博主你骗人,你不是说数组不能扩容吗?
    没错,数组确实不能扩容,但是当我们这个数组长度不够用了怎么办呢?我们可以新建一个更大的数组呀,然后将当前数组复制到大的数组就行了。现有的一些数组扩容的方式全是基于新建-复制的思想进行扩容的,下面我们来举一些例子:
    ①、普通的新建-复制方法:
public static void main(String[] args) {
        int[] arr = {1,2,3};
        int[] arr2 = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr2[i] = arr[i];
        }
        System.out.println(Arrays.toString(arr2));
    }

输出如下
在这里插入图片描述
②、使用System.arraycopy方法进行复制数组,System.arraycopy(arg0,arg1,arg2,arg3,arg4)方法的参数分别为,
arg0:被复制数组;arg1:被复制元素初始索引;arg2:新数组;arg3:新数组初始索引;arg4:复制长度。

public static void main(String[] args) {
        int[] arr = {1,2,3};
        int[] arr2 = new int[10];
        System.arraycopy(arr,0,arr2,0,arr.length);
        System.out.println(Arrays.toString(arr2));
    }

输出如下
在这里插入图片描述
③、调用Arrays.copyOf(arr,len),其中参数arr为被复制数组,len为新数组的长度。

public static void main(String[] args) {
        int[] arr = {1,2,3};
        int[] arr2= Arrays.copyOf(arr,10);

        System.out.println(Arrays.toString(arr2));
    }

输出结果
在这里插入图片描述
可以看出以上三种方法实际上都是基于新建-复制方法的数组扩容方法,所以我们对数组进行扩容的思路就是:先创建一个更大的数组、然后将原来数组复制到新数组中。这样得到的数组就能满足我们的使用要求了。

常见的关于数组的异常

  • 1、越界异常:如果我们查询的数组索引超过数组大小或小于0,就会报出类似下面的异常,这在复杂的编程任务中经常见到,这时我们只需要仔细查看数组的索引是否越界就可以迎刃而解了。
    java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 3

  • 2、空指针异常:空指针异常是指当数组为 null 时,调用数组的一些方法,如length,就会因为对象为 null 而报空指针异常。

  • Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "arrays" is null

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值