import java.util.Arrays;
public class Test15
{
public static void main(String[] args)
{
//如果以此种方式创建数组,则必须定义数组长度
int[] arr = new int[3];
//这种方式的创建,不限制长度,以你声明的元素
//个数决定长度
int[] arr$1 = new int[]{1,2,3};
//这种声明方式是上一个方式的便捷写法
int[] arr$2 = {1,2,3};
//常数声明只能用在数组初始化上,这种赋值的方式
//是会编译错误的
int[] arr$3 = new int[3];
// arr$3 = {1,2,3};
//这样算是种初始化方式,不过略显麻烦
arr$3[0] = 0;
arr$3[1] = 0;
arr$3[2] = 0;
//对于给数组中所有元素赋值成一样的值,api提供支持
//虽然不如自己写个for了。。。为了代码美观
Arrays.fill(arr$3, 0);
//多维数组,允许先声明最高维度的长度
int[][] arr_2 = new int[3][];
int[][][] arr_3 = new int[3][3][];
//这种的声明方式是错误的,因为高维度的数组
//还是未被声明的
// int[][][] arr_4 = new int[][][3];
//有点联系吧,但也不绝对
int[][] arr_5 = {{1,2},{3,4}};
int[] arr_6 = {1,2,3,4};
//二维数组转化成一维数组
for (int i = 0; i < arr_6.length; i++)
{
arr_6[i] = arr_5[i % 2][i / 2];
}
//一维数组转化成二维数组
for (int i = 0; i < arr_5.length; i++)
{
for (int j = 0; j < arr_5[0].length; j++)
{
arr_5[i][j] = arr_6[i * 2 + j];
}
}
//由于上边的方式不是很科学,因为如果二维数组里的
//每个一维数组长度不固定呢?比如arr5这个数组,
//12,34可以吧,1,234 这样也行吧? 123,4,这也可以
//所以内循环的边界应该根据当前的内部数组的长度来定
for (int i = 0; i < arr_5.length; i++)
{
for (int j = 0; j < arr_5[i/*关键点是这个i*/].length; j++)
{
arr_5[i][j] = arr_6[i * 2 + j];
}
}
//虽然多维数组也是一维数组实现的,但有些情况下并不
//等价,比如下面这个,里边的一维数组长度不固定,
//并且其中还有一个是null,这样就没办法跟一维数组
//建立联系,因为根本不知道其中这个null的一维数组的长度
int[][] arr_7 = {{1,2},{1,2,3,4,5},null,{1}};
}
}
复习笔记14 数组
最新推荐文章于 2021-03-08 06:32:21 发布