数组
数组
含义:
一组有着类型相同的连续存储空间的数据类型
创建方式:
值未知:
先声明后创建:
int[] array;
array = new int[5];
直接创建:
int[] array = new int[5];
值已知:
先声明后创建:
int[] array;
array = new int[]{1, 2, 3, 4, 5};
直接创建:
int[] array = {1, 2, 3, 4, 5};
使用:
数组名[下标];
调用下标范围:0~创建数组的长度-1
查询数组长度方法:
数组名.length;
默认值:
在创建数组未对数组初始化是自动将数组初始化
下列是基本数据类型在自动初始化时的默认值
-
-
对于浮点型数组(float[]、double[]等),默认值为0.0。
-
对于字符型数组(char[]),默认值为’\u0000’(空字符)。
-
对于布尔型数组(boolean[]),默认值为false。
-
int[] array = {1, 2, 3, 4, 5};
int[] arrayCopy = array;
arrayCopy[0] = 100;
System.out.println("array[0]:"+array[0]+" arrayCopy:"+arrayCopy[0]);

由此可见直接赋值不能完成数组的复制
对此有两种复制方法:
创建新数组,并用循环的方法将原数组的元素复制到新数组中
int[] array = {1, 2, 3, 4, 5};
int[] arrayCopy = new int[array.length];
for (int i = 0; i < array.length; i++) {
arrayCopy[i] = array[i];
}
arrayCopy[0] = 100;
System.out.println("array[0]:"+array[0]+" arrayCopy:"+arrayCopy[0]);

第二种是使用System包中的arraycopy方法复制数组
System.arraycopy(输入数组,输入数组开始下标,存入数组,存入数组开始下标,复制数量)
int[] array = {1, 2, 3, 4, 5};
int[] arrayCopy = new int[array.length];
System.arraycopy(array, 0, arrayCopy, 0, array.length);
arrayCopy[0] = 100;
System.out.println("array[0]:"+array[0]+" arrayCopy:"+arrayCopy[0]);

import java.util.Arrays;
public class TestPrintArray {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8};
System.out.println("for循环输出:");
//for循环输出
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
//增强型for循环输出
System.out.println("\n增强型for循环输出:");
for (int i : array) {
System.out.print(i+" ");
}
//Arrays.toString()方法输出
System.out.println("\nArrays.toString()方法输出:");
System.out.println(Arrays.toString(array));
}
}

二维数组
含义:
存储类型相同一维数组的数组
创建:
同一维数组的创建,本质上也是数组
声明:
int [][] array = new int[3][5];
赋值:
array[2][4] = 5;
调用:
System.out.println(array[2][4]);
已知数据:
int[][] array = {{1, 2, 3}, {12, 4}, {3, 5, 6, 8, 3}};
不同:
创建是第一个中括号的参数不能省略,内层数组的长度可以不同,但类型必须相同
int[][] array = new int[3][];
array[0] = new int[3];
二维数组名:
二维数组元素存储的是内层的地址
动态数组
解释:
正常情况下数组在创建时数组的长度就已经确定下来,当需要存入的数据超过数组容量,如果不能存储就会导致数据丢失
原理:
//创建动态数组
//创建容量为5的数组
int[] array = new int[5];
//循环向数组内存储数据
for (int i = 0; i < 200; i++) {
//当数组容量不够时
if (i>=array.length) {
//重新创建一个新数组,使新数组的容量为原数组的2倍
int[] arrayNew = new int[array.length*2];
//将原数组中的数据复制到新数组中
System.arraycopy(array, 0, arrayNew, 0, array.length);
//修改原数组的引用地址,指向新数组
array = arrayNew;
System.out.println(array.length);
System.out.println(Arrays.toString(array));
}
array[i] = i;
}


浙公网安备 33010602011771号