【数据类型】Java数组详解

孤人 提交于 2019-12-28 16:23:55

数组:

  • 同一种数据类型的元素;

  • 元素以顺序结构依次排列;

  • 在内存中是以一块连续的内存存储;

一维数组

数组申明
声明格式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:静态初始化

  1. 数据类型[][] 数组名 = new 数据类型[][]{{元素…},{元素…},{元素…},…};
      int[][] aa = new int[][]{{1,2,3},{4,5,6}};
  2. 简化格式:数据类型[][] 数组名 = {{元素…},{元素…},{元素…},…};
      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方法一览:

  1. 查找搜索:binarySearch方法,基于二分查找搜索法。

  2. 拷贝数组:copyOf方法、copyOfRange方法。

  3. 判定相等:equals方法。

  4. 数组赋值:fill 方法。

  5. 数组排序:sort 方法,按升序。

  6. 转换为字符串: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]); //空指针异常
		}
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!