Java中的数组
在本文中,我们将讨论一种编程结构; 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