【java基础】03 数组

目录

3.1 概述

3.2 一维数组

1. 声明和初始化

2. 调用指定位置元素

3. 获取数组长度

4. 遍历

5. 默认初始化值

6. 内存解析

3.3 多维数组

1. 声明和初始化

2. 调用指定位置元素

3. 获取数组长度

4. 遍历

5. 默认初始化值

6. 内存解析

3.4 数组中涉及到的常见算法

3.5 Arrays工具类使用

3.6 数组使用常见异常


3.1 概述

  • 是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
  • 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
  • 创建数组对象会在内存中开辟一整块 连续的 空间,而数组名中引用的是这块连续空间的首地址。
(列表的空间是不连续的)
  • 数组的长度一旦确定,就不能修改。

3.2 一维数组

1. 声明和初始化

  • 声明:type[] var 或 type var[]
注: Java语言中声明数组时不能指定其长度,例如 int a[5];
  • 初始化:
1) 静态初始化:数组的初始化和数组元素的赋值操作同时进行。
ids = new int[]{1,2,3,4};
2) 动态初始化:数组的初始化和数组元素的赋值操作分开进行。
String[] names = new String[5];

2. 调用指定位置元素

通过索引的方式调用。数组的索引从0到length-1。
names[0], names[1], ...

3. 获取数组长度

属性:length     例:names.length  (输出5)

4. 遍历

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

5. 默认初始化值

数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
  • 对于基本数据类型而言,默认初始化值各有不同。
  • 对于引用数据类型而言,默认初始化值为null。

6. 内存解析

内存结构:
举个例子:

3.3 多维数组

(以二维数组为例)
对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。 其实,从数组底层的运行机制来看,其实没有多维数组。

1. 声明和初始化

1) 静态初始化:
int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; //类型推断
2) 动态初始化:
String[][] arr2 = new String[3][2];
String[][] arr2 = new String[3][];

2. 调用指定位置元素

arr[0][1]
注: String[][] arr2 = new String[3][];
调用arr2[1][1];  //空指针异常,
//未初始化arr2[1]
arr2[1] = new String[4];
调用arr2[1][1];  //正确

3. 获取数组长度

int[][] arr = new int[][]{{1,2,3},{4,5},{7,8,9}};
arr.length > 3
arr [0] .length —> 3
arr [1] .length —> 2

4. 遍历

for(int i=0; i < arr.length; i++){
    for(int j = 0; j < arr[i].length; j++){
        System.out.print(arr[i][j]);
    }
}

5. 默认初始化值

int[][] arr = new int [4][3];
arr[0] > 外层元素存放地址值(如:[I@15db9742)
注: 一个 [ 表示一维,I表示int型,@后为地址
arr[0][0] > 内层元素与一维数组相同(初始值为0)

6. 内存解析

3.4 数组中涉及到的常见算法

1. 数组元素的赋值(杨辉三角、回形数等)
2. 求数值型数组中元素的最大值、最小值、平均数、总和等
3. 数组的复制、反转、查找(线性查找、二分法查找)
注: 数组赋值不能直接使用数组名赋值,如arr2 = arr; arr和arr2指向同一地址。可以采用遍历赋值。
4. 数组元素的排序算法

3.5 Arrays工具类使用

java.util.Arrays 类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。
更多方法可以见API。

3.6 数组使用常见异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值