Java之数组 你知多少呢?

我们经常用的就是定义一个变量并对其赋值,然而是否考虑过
如果定义了100个age变量并对其赋值,是不是很复杂呢?1000个呢?甚至更多。Java就引入数组这一概念解决这些问题。

一、数组的概念

数组是相同数据类型多个数据的容器(变量)

这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。

二、数组的创建格式

1. 一维数组

1.1 常用格式:

  • 创建数组的同时,制定数组中的内容。
数据类型[] 数组名称 = {
    
    数据1,数据2,数据3...数据n};
int[] ages = {
    
    10,11,12,13,14};
  • 创建数组, 并指定长度, 不指定数组中的内容。
数据类型[] 数组名称 = new 数据类型[数组长度];//数组长度通过int数据指定
int[] ages2 = new int[10];

1.2 不常用格式:

  • 创建数组 , 不初始化
数据类型[] 数组名;
int[] nums;
  • 创建数组, 并指定数组中的内容
数据类型[] 数组名称 = new 数据类型[]{
    
    内容1,内容2,内容3...内容n};
int[] ages = new int[] {
    
    11,12,13,14};

注意啦:

在不常用格式第一条中,如果想对nums数组赋值时,不能出现下面这种情况
在这里插入图片描述
解决办法就类似于不常用格式的第二条

	因为数组属于 引用数据类型 ,需创建一个对象。
	int[] nums ;
	//nums[] = {10,20,30,40};
	nums = new int[] {
    
    30,10,50,40};

2. 二维数组

2.1 定义格式

  • 数据类型[ ] [ ] 数组名
  • 数据类型 数组名[ ] [ ]
  • 数据类型[ ] 数组名[ ]

2.2 初始化

2.2.1 静态初始化

【分配空间的同时赋值】

  • 数据类型[ ] [ ] 数组名 = new 数据类型[ ] [ ]{ {数据},{数据},{数据}…};
int[][] nums = new int[][]{
    
    {
    
    1,3,5},{
    
    7,8,10},{
    
    4,6,19}};

2.2.2 动态初始化

【分配空间与赋值分开进行】

  • 数据类型[ ] [ ] 数组名 = new 数据类型[m] [n]; //m表示二维数组中一维数组的个数,n表示一维数组中的元素个数。
import java.util.Scanner;
public class Demo1 {
    
    
	public static void main(String[] args) {
    
    
		/*
		 * 多维数组
		 * 
		 * 创建格式:
		 * 		数据类型[] 数组名 = new 数据类型[长度]
		 * 		int[][] tem = new int[10][];
		 */
		int[][] tem = new int[10][];
//		tem[0] = {1, 2, 3};		// 这样写会报错 
		tem[0] = new int[]{
    
    1, 2, 3};
		System.out.println(" 该数组的值为 " + tem[0][2]);
	}
}

运行结果:

 该数组的值为 3

三、数组的常见问题

首先,我们理解下数组的下标和数组的长度 二者之间的关系。

下标可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0~n-1。
可以通过下标的方式访问数组中的每一个元素。

注意:数组的长度在创建时就固定了。

	int[] arr = new int[10];
	arr[5] = 123;
	System.out.println(arr[5]);

接着我们就谈谈数组的常见问题。

  • 数组下标越界问题:超出长度的下标操作
	//int[] nums = {10,11,12,13,14};
	//System.out.println(nums[5]);
  • 空指针问题:数组未赋值(说白了就是名称与值未绑定
    在这里插入图片描述
    如上图可知:在局部变量中定义数组并未对其赋值,要想输出结果,此时会报错,为什么呢?

    是因为在局部变量的数组未对其赋值,就相当于未定义,而导致报错!

    那在全局变量中会如何呢?让我们看看下面这张图吧!
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
    说明在全局变量中定义未赋值的数组,系统会默认给它一个null值

	int[] nums = null;
	System.out.println(nums[1]);

猜你喜欢

转载自blog.csdn.net/weixin_46312449/article/details/112179757