数组:
-
同一种数据类型的元素;
-
元素以顺序结构依次排列;
-
在内存中是以一块连续的内存存储;
一维数组
数组申明
声明格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
【又叫动态初始化】
int[] x = new int[3];
x[0] = 1; //初始化
x[1] = 2;
声明格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
【又叫静态初始化】
int[] x=new int[]{1,2,3}; //初始化
声明格式3: 元素类型[] 数组名 = {元素…};
int[] x = { 1, 2, 3 }; //初始化
注意:没有用new的申明和初始化必须放在一条语句中;
int[] arr;
arr={1,2,3,4,5}; //这种是错误的
正确的是:int[] arr={1,2,3,4,5};
注意事项:
如果指定了容量,就不能在后加初始化列表;int[] a=new int[5]{1,2,3,4};这样是错误的;
静态初始化
静态初始化的格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
举例:int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,元素3,...};
int[] arr = {1,2,3};
//静态一维数组的示例
public class ArrayDemo {
public static void main(String[] args) {
//定义数组
int[] arr = {1,2,3};
//输出数组名和元素
System.out.println(arr); //打印数组的地址空间名
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
二维数组
二维数组:其实就是元素为一维数组的数组。
定义格式:
a) 数据类型[][] 数组名; (推荐的方式)
int[][] aa;
b) 数据类型 数组名[][];
int aa[][];
c) 数据类型[] 数组名[];
int[] aa[];
初始化
A:动态初始化
数据类型[][] 数组名 = new 数据类型[m][n];
int[][] aa = new int[5][5;
其中,
- m表示的是二维数组中一维数组的个数
- n表示的是一维数组中的元素个数
B:静态初始化
- 数据类型[][] 数组名 = new 数据类型[][]{{元素…},{元素…},{元素…},…};
int[][] aa = new int[][]{{1,2,3},{4,5,6}};
- 简化格式:数据类型[][] 数组名 = {{元素…},{元素…},{元素…},…};
int[][] aa = {{1,2,3},{4,5,6}};
元素获取
二维数组名配合索引可以获取到每一个一维数组。每一个一维数组配合索引名可以获取到数组中的元素。
假如我有一个二维数组:arr。
我要从中获取一维数组:arr[索引]
我要从中获取二维数组的元素:arr[索引][索引]
注:操作完全与C/C++一样。
实例
public class Main {
public static void main(String[] args) {
int[][] a; //申明;
a=new int[2][3];//意思是:申请两个一维数组,每个一维数组分配3个存储空间;
for(int i=0;i<2;i++)//使用数组;
{
for(int j=0;j<3;j++)
a[i][j]=i*j;
}
int[][] d= {{1,2,3},{11,22,33}};//使用初始化列表来创建数组对象;
}
}
Array类
位于java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的,且包含多中数据类型的重载。
static方法一览:
-
查找搜索:binarySearch方法,基于二分查找搜索法。
-
拷贝数组:copyOf方法、copyOfRange方法。
-
判定相等:equals方法。
-
数组赋值:fill 方法。
-
数组排序:sort 方法,按升序。
-
转换为字符串:toString方法。
详见相关API
相关的错误和异常
ArrayIndexOutOfBoundsException
:数组索引越界异常
产生的原因:我们访问了不存在的索引
NullPointerException
:空指针异常
产生的原因:数组已经不在指向堆内存的数据了,你还使用数组名去访问元素
**错误实例: **
public class ArrayDemo {
public static void main(String[] args) {
//定义数组
int[] arr = {1,2,3};
//访问数组元素
//System.out.println(arr[3]); 索引越界异常
//引用类型:类,接口,数组
//常量:空常量,null,是可以赋值给引用类型的
arr = null;
System.out.println(arr[1]); //空指针异常
}
}
来源:CSDN
作者:极客技术与极客人
链接:https://blog.csdn.net/ComputerGeekHack/article/details/103743838