Java中的数组

时间:2020-01-09 10:34:50  来源:igfitidea点击:

在本文中,我们将讨论一种编程结构; Java中的数组。涵盖的主题包括如何声明数组,如何创建和初始化数组,如何在数组中存储元素以及如何使用数组索引访问这些元素,Java中的数组类型。

Java中的数组

Java中的数组是一种基本的编程结构,其中包含固定数量的单个类型的值。对于每种类型,都有一个对应的数组类型,因此我们可以拥有任何原始数据类型的数组,例如int,double,char等,以及对象数组,例如String,BigInteger或者任何用户定义的对象。

数组元素存储在连续的内存位置中,如果原始类型值存储在这些位置中,则对于对象数组,数组将保留对那些对象的引用。

数组中的每个项目都称为一个元素,每个元素都可以通过其数字索引进行访问。索引编号从0开始。如果数组中有n个元素,则可以使用从0到n-1的索引进行访问。

在Java中声明数组

Java数组声明的语法如下:

type[] array-name;

Or

type array-name[];

请注意,两种数组声明方法均有效,但不鼓励使用Java doc类型的array-name []形式。这就是Java文档所说的:"但是,约定不鼓励这种形式。括号标识阵列类型,并应以类型名称出现。

根据语法,数组声明包含两个部分:数组的类型和数组的名称。数组的类型写为type [],其中type是所包含元素的数据类型;方括号是特殊符号,指示此变量包含一个数组。数组的名称可以是任何变量名,只要它遵循命名变量的规则和约定即可。

在Java-中声明数组的一些示例

int[] anArrayOfIntegers;

double[] tempArray;

String[] arrayOfNames;

Employee[] arrayOfEmployees // Where Employee is a custom class

用Java创建和初始化数组

注意,数组声明实际上并没有创建数组。它只是告诉编译器该变量将保存指定类型的数组。
要使用Java创建数组,请使用以下方法之一:

  • 使用new运算符创建一个数组。

  • 使用数组文字,其中创建和初始化在一行中完成。

使用新运算符创建数组

使用new运算符创建数组的语法是

array-name = new type[size];

这里的type是数组元素的数据类型。

size是可以存储在数组中的元素数。

array-name –保留对创建的数组的引用的变量。

例如,创建一个长度为10的数组,用于存储int值。

int[] intArray; // declaration
intArray = new int[10]; // creation

我们也可以将声明和创建这两个步骤组合为一个步骤。

int[] intArray = new int[10];

很重要的一点

使用new运算符创建数组时,其元素会自动初始化为默认值,如下所示:

  • 数字类型为0。

  • 对于布尔值,则为false。

  • 对象引用(对象数组)为null。

使用数组文字(结合创建和初始化)

我们还可以使用捷径语法创建和初始化一个数组,其中使用花括号{}来提供用逗号分隔的值。

例如

int[] anArray = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

在这里,数组的长度由括号之间提供的值的数量确定,并用逗号分隔。

Java数组创建示例

1下面的Java示例创建一个整数数组,对其进行初始化,然后在for循环中使用数组索引访问该数组值。

public class ArrayExample {

	public static void main(String[] args) {
		// creating array
		int[] num = new int[5];
		// initializing array
		num[0] = 10;
		num[1] = 20;
		num[2] = 30;
		num[3] = 40;
		num[4] = 50;
		for(int i = 0; i < num.length; i++){
			System.out.println("element at index " + i + " is " + num[i]);
		}
	}
}

输出:

element at index 0 is 10
element at index 1 is 20
element at index 2 is 30
element at index 3 is 40
element at index 4 is 50

整数值数组

2在此示例中,我们将看到如何创建对象数组。在代码中,创建了一个Employee类型的数组,其中Employee是用户定义的类。该数组可以存储Employee类型的对象。

class Employee{
	private int empId;
	private String empName;
	Employee(int empId, String empName){
		this.empId = empId;
		this.empName = empName;
	}
	public int getEmpId() {
		return empId;
	}
	public void setEmpId(int empId) {
		this.empId = empId;
	}
	public String getEmpName() {
		return empName;
	}
	public void setEmpName(String empName) {
		this.empName = empName;
	}
}
public class ArrayExample {

	public static void main(String[] args) {
		// creating array
		Employee[] empArray = new Employee[5];
		// initializing array
		empArray[0] = new Employee(1, "Cary");
		empArray[1] = new Employee(2, "Gregory");
		empArray[2] = new Employee(3, "Clint");
		empArray[3] = new Employee(4, "James");
		empArray[4] = new Employee(5, "John");
		for(Employee emp : empArray){
			System.out.println("Id- " + emp.getEmpId() + " Name- " + emp.getEmpName());
		}
	}
}

输出:

Id- 1 Name- Cary
Id- 2 Name- Gregory
Id- 3 Name- Clint
Id- 4 Name- James
Id- 5 Name- John

对象数组

ArrayIndexOutOfBoundsException-运行时数组索引检查

Java数组保证不能在其范围之外访问它。 Java对任何超出范围的索引都有严格的运行时检查。尝试访问超出范围(负数或者正数)的数组索引将导致ArrayIndexOutOfBoundsException,这是运行时异常。

public class ArrayExample {

	public static void main(String[] args) {
		// creating array
		int[] num = new int[5];
		// initializing array
		num[0] = 10;
		num[1] = 20;
		num[2] = 30;
		num[3] = 40;
		num[4] = 50;
		// trying to access out of range index
		int i = num[5];
	}
}

输出:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at com.theitroad.programs.ArrayExample.main(ArrayExample.java:34)

如我们所见,创建了长度为5(索引0到4)的数组。尝试访问超出范围的索引5会导致ArrayIndexOutOfBoundsException。

Java中的多维数组

我们还可以在Java中声明多维数组,它们实际上是数组数组。要声明多维数组,请使用另一组方括号指定每个其他维。

例如,创建一个二维整数数组

int[][] matrix

多维数组Java示例

public class ArrayExample {

	public static void main(String[] args) {
		// 2-D array
		int[][] matrix = new int[3][3];
		// initializing array
		for(int i = 0; i < 3; i++){
			for(int j = 0; j < 3; j++){
				// assigning random numbers
				matrix[i][j] = (int)(Math.random() * 10);
			}
		}
		// Displaying array elements
		for(int i = 0; i < 3; i++){
			for(int j = 0; j < 3; j++){
				System.out.print(matrix[i][j] + " ");
			}
			System.out.println();
		}       
	}
}

输出:

9 1 2 
4 2 0 
0 7 8