数据类型[] 数组名; // 声明一维数组
数组名 = new 数据类型[个数]; // 分配存储空间
上述两步骤可合并成:
数据类型[] 数组名 = new 数据类型[个数];
以int[] x = new int[5]
为例,x
的数据类型是一个对int型数组对象的引用。
如果想让x不指向任何数组对象,则可以使用x = null
语句。执行该语句之后,原来得数组对象不再被任何引用变量所引用,也就变成了【垃圾】,直到垃圾回收器将他释放。
数组在用new
分配内存空间时,数组每个元素都会被自动赋初值:
‘\0‘
false
null
我们在定义数组的时候可以同时进行初始化操作:int[] x = {1, 2, 3, 4, 5}
。
此时数组x就是一个容量为5个int数据型存储空间,其中每一个元素的值依次为1, 2, 3, 4, 5
。
使用下标访问
for-each语句访问一维数组
int[] arr = {1, 2, 3};
for (int elem : arr)
System.out.println(elem);
数据类型[][] 数组名;
数组名 = new 数据类型[行数m][列数n];
上述方法定义了一个m行n列的矩形数组。它也可以进行合并写成:
数据类型[][] 数组名 = new 数据类型[行数m][列数n];
与C语言不同,Java可以定义非矩形二维数组。如下图:
int[][] x = new int[3][];
x[0] = new int[3];
x[1] = new int[2];
上述代码中x有三个元素,每个元素都是int[]
类型得一维数组。相当于定义了三个一维数组引用变量,分别是int[] x[0]
、int[] x[1]
、int[] x[2]
。然后再对元素x[0]
和x[1]
赋值,由于x[2]
没有被手动赋值,且又是一个引用变量,所以会被自动赋值x[2]=null
。
可以使用".length"属性获得数组得元素个数:
x.length; // x的行数-3
x[0].length; // x第一行的元素个数
x[1].length; // x第二行的元素个数
x[2]为null,不能使用lenght属性。
int[][] arr = {{1,2,3},
{1,2},
{1,2,3,4,5,6}};
上述数组为不规则数组,矩形数组也可以使用上述方式进行初始化操作。
二维数组要求必须指出高层维数。
常见形式:
int[][] arr = new int[10][]
只指定高层维数。int[][] arr = new int[10][2]
指定高底层维数。int[][] arr = new int[][10]
错误。int[][] arr = new int[][]
错误。有时候我们需要判断两个不同数组对象中对应元素是否对应相等,此时可以使用java.util.Arrays
类提供的equals
方法。
实例如下:
package jinjie_01;
import java.util.Arrays;
public class Array_2D {
public static void main(String[] args)
{
int[] arr = {1, 2, 3};
int[] arr1 = {1, 2, 3};
System.out.println(Arrays.equals(arr, arr1));
int[][] arr2 = {{1,2}, {1}};
int[][] arr3 = {{1,2}, {1}};
System.out.println(Arrays.equals(arr2, arr3)); // 二维数组不能直接使用改方法判断
// 二维数组可以逐行判断元素是否相等
boolean flag = true;
for (int i=0; i<arr2.length; i++)
if(!Arrays.equals(arr2[i], arr3[i]))
{
flag = false;
break;
}
System.out.println(flag);
}
}
/*
运行结果:
true
false
true
*/
使用Arrays.sort()
对一个数组进行升序排序:
package jinjie_01;
import java.util.Arrays;
public class Array_2D {
public static void main(String[] args)
{
int[] arr = {3, 3, 5, 6, 4, 3, 0};
Arrays.sort(arr); // 升序排序,保存在arr数组中
for(int x : arr)
System.out.println(x);
System.out.println();
int[] arr1 = {3, 3, 5, 6, 4, 3, 0};
Arrays.sort(arr1, 0, 5); // 对前5个元素进行升序排序,左闭右开[0,5)
for(int x : arr1)
System.out.println(x);
}
}
/*
0
3
3
3
4
5
6
3
3
4
5
6
3
0
*/
原文:https://www.cnblogs.com/xxmmqg/p/12979014.html