数组是一种数据结构,用来存储一类型值的集合。可以看成是相同类型元素的一个集合,再内存中是一段连续的的空间,通过一个整形索引或下标可以访问数组中的每一个值。例如,如果a是一个整形数组,a[i]就是数组中索引为i的整数。
数组的声明有三种方式
方式一:类型[] 数组名 = new 类型[数组元素个数]
//下面我们声明一个整形数组,元素个数为3的整形数组
int[] array = new int[3];
解释:此时我们就成功声明一个整形类型并且元素个数为3的整形数组,
并且默认初始化元素全部为0;
方式二:类型[] 数组名 = new 类型[]{元素一,元素二,…,元素n}
//下面我们创建一个数组里面元素为1——5的整形数组
int[] array1 = new int[]{1,2,3,4,5};
//简写形式
int[] array2 = {1,2,3,4,5};
解释:这种方式创建的数组的长度为数组中元素个数,创建及初始化
方式三:var 数组名 = new 类型[元素个数]
//创建元素个数为3的整数数组
var array1 = new int[3];
//相当于下面的这种创建方式
int[] array2 = new int[3];
解释:这种方式创建的数组在编译的时候虚拟会自动匹配右边的变量的类型,这也是var关键字的用法。
补充:一旦创建了数组,就不能再改变数组的长度(不过,当然可以改变单个数组元素)。如果程序运行中需要扩展数组的大小,就应该使用另一种数据类型——数组列表(这里不加拓展)。
数组元素从0开始编号。最后一个合法的索引为数组长度减1.创建数组是所有元素初始化为0,boolean数组初始化为false。对象数组(这里不加拓展)的元素则初始化为一个特殊值null,表示这些元素未存放任何对象。
//我们先创建一个数组
int[] array = {1,2,3,4,5};
//此时我们就访问数组元素下标为2的元素(3)
int getElement = array[2];
//打印输出
System.out.println(getElement);
我们知道了数组的访问,那我们就来遍历一下整个数组,java中提供了两种循环方式遍历数组。
方式一:for循环遍历整个数组
//创建一个数组
int[] array = {1,2,3,4,5};
//for遍历,array.length为获取数组长度
for(int i = 0;i < array.length;i++){
System.out.print(array[i] + ", ");
}
方式二:for each循环
Java有一种功能很强的循环结构,可以用来一次处理数组(或则任何其他元素集合)中的每个元素,而不必考虑指定索引或下标值。
for each 循环格式:for(变量类型 变量 : 数组)
int[] array = {1,2,3,4,5};
for(int a : array){
System.out.println(a);
}
在Java中,允许将一个数组变量拷贝到另一个数组变量。这时,两个变量将引用同一个数组。
int[] array1 = {1,2,3,4,5};
int[] array2 = array1;
解释:此时array2的数组和array1的数组一模一样,但是通过array2改变数组中元素的值也能影响到array数组中的值,这就是它们引用同一个数组
如果确实希望一个数组的所有值拷贝到一个新的数组中,就要使用Arrays类的copyOf方法:
int[] array1 = {1,2,3,4,5};
int array2 = Arrays.copyOf(array1,array1.length);
解释:此时拷贝过来的数组就不是引用同一个数组,array2是新开辟内存空间的数组,此时操作array2并不会影响array1。
要想对数值型数组进行排序,可以使用Arrays类中的sort方法:
public class ArraySort {
public static void main(String[] args) {
int[] array = new int[100];
//给数组中的元素赋值
Random r = new Random();
int count = 0;
for (int i = 0; i < array.length; i++) {
//产生1-100的随机数
int random = r.nextInt(100) + 1;
array[i] = random;
}
System.out.print("排序前的数组:");
for (int a : array) {
if(count % 10 == 0){
System.out.println();
}
count++;
System.out.print(a + ", ");
}
count = 0;
System.out.print("\n排序后的数组:");
Arrays.sort(array);
for (int a : array) {
if(count % 10 == 0){
System.out.println();
}
count++;
System.out.print(a + ", ");
}
}
运行结果:
到目前为止,我们看到的数组与其他程序设计语言中的数组没有多大区别。但在底层实际存在着一些细微的差异,有时你可以充分利用这一点:Java实际上没有多维数组,只有一维数组。可以这样理解,二维数组其实就是一维数组中存放着一维数组。多维数组被解释为“数组中的数组”。
//创建一个二维数组
int[][] array = new int[4][];
array[0] = new int[]{1,2,3};
array[1] = new int[]{4,5,6,5,6};
array[2] = new int[]{9,8,7,6,5,4,3};
array[3] = new int[]{1,1,1,1,1};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + ", ");
}
System.out.println();
}
运行结果:
补充:相信这个例子一定可以帮助你理解数组中的数组,Java中的不规则数组,Java中可以有列不规则的数组。
结语:每个人的成长和进步都离不开点点滴滴的积累,如果小编的内容对您有所帮助,希望友友们三连加关注哦,你的支持是小编创作的最大动力。