例:
int[] array1d = new int[5];
System.out.println(Arrays.toString(array1d));
int[][] array2d = new int[2][3];
for (int i = 0; i < array2d.length; i++) {
System.out.println(array2d[i].length);
System.out.println(Arrays.toString(array2d[i]));
}
- array2d可以理解为一个容量是2的一维数组,这个一维数组的2个元素都是容量为3的一维数组
- 可以把整个二维数组看成一个2*3的矩阵,2行3列
二维数组的练习:
输入一个不超过5位数的整数,输出中文形式。如:12345 -> 一万二千三百四十五
public static void main(String[] args) {
//汉字数组,下标和内容对应
char[] chinese = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
//单位
String[] unit = {"","十", "百", "千", "万"};
//用户输入的数字
int num = 10010;
//获取数字的位数
int length = (num + "").length();
//用来存放汉字
String chineseNum = "";
//用来存放上一个数字
int lastNum = 0;
//循环遍历各位数字
for (int i = 0; i < length; i++) {
//获取个位数字
int temp = num % 10;
//去掉个位数重新赋值
num /= 10;
//如果上一位数字是0,本位数字还是0,只需要一个。
if (lastNum == 0 && temp == 0) {
continue;
//本位数字是0不需要拼接单位
}else if (temp == 0) {
chineseNum = chinese[temp] + chineseNum;
//正常情况,拼接数字和单位
} else {
chineseNum = chinese[temp] + unit[i] + chineseNum;
}
//记录本位数字,用于下次循环的判断
lastNum = temp;
}
System.out.println(chineseNum);
}
一个整型数组中,存在若干个重复的元素,打印出所有重复元素的索引和元素值。
public static void main(String[] args) {
int[] array = {1,2,4,4,5,5,6,7,2,8,6,2};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i] == array[j] && i != j) {
System.out.println(i + "::" + array[i]);
break;
}
}
}
}
在上一题基础上,去除重复元素,并生成一个新的数组,新数组不存在空位。
public static void main(String[] args) {
int[] array = {1,2,4,4,5,5,6,7,2,8,6,2};
int[] newArray = new int[array.length];
//用于统计有多少个不重复的数字
int count = 0;
flag1:
//一次遍历所有数字
for (int i = 0; i < array.length; i++) {
//和之后的所有数字进行比较
for (int j = i + 1; j < array.length; j++) {
//如果有重复,直接跳过进行下一个数字的比较
if (array[i] == array[j]) {
continue flag1;
}
}
//将不重复的数字存放到新数组
newArray[count] = array[i];
//统计不重复数字的个数
count++;
}
//去掉新数组的空位
newArray = Arrays.copyOf(newArray, count);
System.out.println(count);
System.out.println(Arrays.toString(newArray));
}
总结:
二维数组可以理解为为一个数组分配了多少个内存空间,每个内存空间里面存放的也是数组