数组

Posted Aiden_Zhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组相关的知识,希望对你有一定的参考价值。

3.1 数组概述

数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命令,通过编号的方式对这些数据进行统一管理。

  • 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
  • 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址
  • 数组的长度一旦确定,就不能修改
  • 可以通过下标的方式调用指定位置的元素,速度很快

3.2 一维数组

3.2.1 一维数组的声明和初始化

一维数组的声明

  • type var[] 或者 type[] var
    例如:int a[]; int[] a1; double b[]; String[] c;
  • Java语言中声明数组时不能指定其长度(数组中元素的个数), 例如:int a[5]😭非法)

一维数组初始化

  • 动态初始化:数组声明且为数组元素分配空间与赋值操作分开进行
  • 静态初始化:在定义数组的同时就为数组元素分配空间并赋值

初始化举例:

public class ArrayTest 
	public static void main(String[] args) 
		// 动态初始化1
		int[] arr = new int[3];
		arr[0] = 1;
		arr[1] = 3;
		arr[2] = 4;
		// 动态初始化2
		String[] names;
		names = new String[3];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";

		// 静态初始化1
		int[] arr1 = new int[]3, 6, 9;
		// 或
		int[] arr1 = 3, 6,9
		// 静态初始化2
		int[] ids;
		ids = new int[]1001, 1002, 1003, 1004;
	

3.2.2 一维数组的使用

  • Java中使用关键字new才创建数组,定义并利用关键字new为数组分配空间之后,才可以引用数组中的每个元素
  • 数组元素的引用方式:数组名[数组元素下标]
  • 数组元素下标从0开始
  • 每个数组都有一个length属性指明它的长度,例如:a.length指明数组a的长度
  • 数组一旦初始化,其长度无法改变
  • 数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。对于不同的数据类型,默认的初始化值各有不同,如下表:
数组元素类型元素默认初始值
byte0
short0
int0
long0L
float0.0F
double0.0
char0或写为’\\u0000’
booleanfalse
引用类型null

举个栗子:从键盘读入学生成绩,找出最高分,并输出学生成绩等级。

  • 成绩 >= 最高分 - 10:等级为A
  • 成绩 >= 最高分 - 20:等级为B
  • 成绩 >= 最高分 - 30:等级为C
  • 其他:等级为D
import java.util.Scanner;

public class ArrayDemo 
	public static void main(String[] args) 
		// 使用Scanner读取学生个数
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入学生人数:");
		int number = scanner.nextInt();
		
		// 创建数组,存储学生成绩:动态初始化
		int[] scores = new int[number];
		
		// 数组元素赋值并获取数组最大元素
		int maxScore = 0;
		System.out.println("请输入" + number + "个学生的成绩:");
		for (int i = 0; i < scores.length; i++) 
			scores[i] = scanner.nextInt();
			if (scores[i] > maxScore) 
				maxScore = scores[i];
			
		
		
		// 判断学生等级,输出等级和成绩
		char level;
		for (int i = 0; i < scores.length; i++) 
			if (maxScore - scores[i] <= 10) 
				level = 'A';
			else if (maxScore - scores[i] <= 20) 
		 		level = 'B';
			else if (maxScore - scores[i] <= 30) 
				level = 'C';
			else 
				level = 'D';
			
			System.out.println("student " + i + " score is " + scores[i] + 
					", grade is " + level);
			
	

3.3 二维数组

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

3.3.1 二维数组初始化

  • 动态初始化
  • 静态初始化

二维数组初始化举例

public class ArrayTest2 
	public static void main(String[] args) 
		// 静态初始化
		int[][] arr1 = new int[][]1, 2, 3, 4, 5, 6, 7, 8;
		
		// 动态初始化
		String[][] arr2 = new String[3][2];
		String[][] arr3 = new String[3][];
	

注意:Java中数组不必都是规则的矩阵形式。

3.3.2 二维数组的使用

public class ArrayTest2 
	public static void main(String[] args) 	
		// 获取数组的长度
		System.out.println(arr1.length); //3
		System.out.println(arr1[1].length); //2
		
		// 遍历二维数组:两层for循环
		for(int i = 0; i < arr1.length; i++) 
			for(int j = 0; j < arr1[i].length; j++) 
				System.out.println(arr1[i][j]);
			
		
	

以上是关于数组的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数组 ( 数组指针 | 数组指针定义 | 使用 数组指针类型 定义数组指针 )

C++二维数组给一维数组赋值

C 语言数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

数组的创建,及数组的方法

复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针

C语言数组