Java-数组(最简单的数据结构)

程序 = 算法 + 数据结构

算法 :解决程序的流程步骤

数据结构 : 将数据按照某种特定的结构存储

数组是最简单的数据结构,是存放同一类型数据的集合,在内存中开辟一块连续的内存空间

1.数组的定义:三种方式,其中arr1和arr2最常用

其中arr1表示申请一个大小为5个int数据类型大小的连续内存空间,即申请空间

arr2表示直接申请空间并对空间进行赋值,即初始化

arr3表示匿名数组方式,不需要定义名称,用于这个数组只使用一次的情况

int[] arr1 = new int[5];
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = new int[]{1, 2, 3};
//匿名数组方法
System.out.println(Arrays.toString(new int[]{1 , 2 ,3}));

2.数组的访问:下标,大小和下标不同

定义数组时传入的数据是数组的大小,即数组的长度,可以通过arr.length获取,这个是数组的一个属性,是不是方法,可以直接通过属性获取定义的大小

数组的下标是从0开始的,即如果定义int[] arr = new int[3];下标就是arr[0],arr[1],arr[2],没有arr[3]这样会报异常,因为arr[3]的位置没有申请空间,会出现数组越界异常

java.lang.Array Index OutOf Bounds Exception: 4

数组超过了本身的界限,所以要注意分界点

定义并初始化数组后就可以通过下标获取到每个地方存储的数据

3.数组的遍历

有了之前学习的循环,又有了数组的存储方式,我们就可以对数组进行操作了,其中最简单频繁的操作就是遍历,比如查找

遍历是最简单的边界问题,程序员最常用的就是第一种,从0开始到arr.length - 1,也可以是第二种,第二种的话i是符合普通人的理解的,但是i和下标就不相对了,i要对应i - 1下标

for(int i = 0; i < arr.length; i++){
    System.out.println(arr[i]);
}
//对数组进行遍历或者
for(int i = 1; i <= arr.length; i++){
    System.out.println(arr[i - 1]);
}

4.二维数组

二维数组是指一维数组里面存放的数据是个数组

即一维数组里面存放的是地址,数据都存放在好多个连续地址中

本段代码首先定义一个二维数组,其中arr[0],这个地址存放的是第一行数据,arr[1]地址存放的是第二行数据,以此类推,真正存放数据的是arr[0][0]这些一维数组下的下标

        int[][] arr = {{1 , 2 , 3} , { 2 , 3} , {1}};
        System.out.println(arr[0]);//[I@677327b6
        System.out.println(arr[1]);//[I@14ae5a5
        System.out.println(arr[2]);//[I@7f31245a
        System.out.println(arr[0][0]);//1
        System.out.println(arr[1][1]);//3

由于二维数组不是真正的二维数组,而是一维数组中存放一个数组实现的,这个数组的大小不确定,多大都可以,所以在Java中二维数组的存储每行的个数不一定相等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值