数组
- 数组是引用数据类型,有内存分配问题。
- 声明并开辟数组:数据类型[] 数组名称 = new 数据类型[长度];
- 数组静态初始化
简化格式 | 数据类型 数组名称 = {值1,值2,…} |
---|---|
完整格式 | 数据类型 数组名称 = new 数据类型[]{值1,值2,…} |
下面看一段关于数组的一段代码:
public class ArrayDemo{
public static void main(String[] args) {
int[] x = null ;
int[] temp = null ; // 声明对象
x = new int[3] ;
System.out.println(x.length) ;
x[0] = 1 ; // 数组第⼀个元素
x[1] = 2 ; // 数组第⼆个元素
x[2] = 3 ; // 数组第三个元素
for (int i = 0; i<x.length ; i++) {
System.out.println(x[i]) ; // 通过循环控制索引下标更改
}
temp = x ; //如果要发⽣引⽤传递,不要出现[]
temp[0] = 55 ; // 修改数据
System.out.println(x[0]) ;
}
}
由上面的代码块可以知道:
- 数组的访问可以通过索引来进行,即“数据名称[索引]”。访问范围是[0,length)如果超过范围将会报出异常。
- 当开辟数据空间时,还没有初始化之前,默认为各个类型的默认值。
- 数组是一个有限的数据集合。数组名称.length会获得数组长度。
数组是引用数据类型了,就一定可以发生引用传递,而现在的引用传递的本质也一定是:同一块堆内存空间可以被不同的栈内存所指向。同一块堆内存被不同的栈内存所指向。
- 二维数组
- 二维数组的实质其实是一个数组的数组。
- 数组的动态初始化:
数据类型 对象数组[][] = new 数据类型[行个数][列个数]; - 数组的静态初始化:
数据类型 对象数组[][] = new 数据类型[行个数][列个数]{{值, 值,…}, {值, 值,…},…}; - 二维数组在创建时,必须确定行个数,否则会报错。
public class ArrayDemo {
public static void main(String args[]) {
//此时的数组并不是一个等列数组
int data[][] = new int[][] {
{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
//如果在进行输出的时候一定要使用双重循环,
//外部的循环控制输出的行数,而内部的循环控制输出列数
for(int i = 0; i < data.length; i++) {
for(int j = 0; j < data[i].length; j++) {
System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、");
}
System.out.println();
}
}
}
- 关于java对数组的支持
- 实现数组排序:java.util.Arrays.sort(arrayName) ;
- 实现数组拷贝
System.arraycopy(源数组名称,源数组开始点,⽬标数组名称,⽬标数组开始点,拷⻉⻓度);
java.util.Arrays.copyOf(源数组名称,新数组⻓度)
其余的还有很多,可以查看文档:java在线文档
关于数组的面试题目:
力扣题目
牛客需要自己选择有关数组的题目