数据操作、二维数组
删除数组中的元素
将要删除的数组中元素值设为默认值
char [] arr = new char[]{'a','b','c','d'};
arr[1] = '\0';
数组元素删除并移动的循环实现
简单版:
/*传参为待处理数组及要删除的元素下标*/
public void deleteArrayEase(char[] arr, int n) {
//1. 给待删除设置默认值(可省略)
arr[n] = '\0';
//2. 后面元素往前移
for (int i = 1; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
//最后的元素设置为默认值
arr[arr.length-1] ='\u0000';
//遍历输出
for (char c : arr) {
System.out.print(c+"\t");
}
普通版
/*传参为待处理数组、待处理元素位置、有效元素长度*/
public int deleteArrayHard(char[] arr, int n, int count) {
//直接将要删除元素后面的元素前移
for (int i = n; i < count - 1; i++) {
arr[i] = arr[i + 1];
}
//有效数组元素减一
count--;
for (int i = 0; i < count; i++) {
System.out.print(arr[i] + "\t");
}
return count;
}
两个变量交换值
两变量交换值,正常处理需要一个中间值
数组元素倒序
//给定数组以及数组有效元素个数
public void arrayDesc( char [] arr,int count){
//中间值
char c = 'a';
//无论奇数还是偶数,都可以使用 count/2
for (int i = 0; i < count/2; i++) {
c = arr[i];
arr[i] = arr[count-1- i];
//别忘了给右边的也赋值
arr[count-1-i] = c;
}
for (int i = 0; i < count; i++) {
System.out.print(arr[i]+"\t");
}
System.out.println("\n");
}
多维数组
定义一个长度为三的二维数组
char[][] arr = new char[3][2];
char[][] arr = {{'a','b'},{'c','d'},{'e','f'}};
char[][] arr = new char[][]{{'a','b'},{'c','d'},{'e','f'}};
二维数组内存示意图
多维数组属性
-
外侧数组长度:对象名.length
-
内侧数组长度:对象名[]
char [][] arr = new char[3][2]; System.out.println(arr.length);//外侧数组长度3 System.out.println(arr[1].length);//内侧数组长度2
遍历多维数组
普通for循序
char[][] arr = {{'a', 'b'}, {'c', 'd'}, {'e', 'f'}, {'g', 'h'}};
for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
}
System.out.println("\n")
加强for循环
char[][] arr = {{'a', 'b'}, {'c', 'd'}, {'e', 'f'}, {'g', 'h'}};
for(char []arrays:arr){
for(char c:arrays){
System.out.print(c+"\t")
}
}
System.out.println("\n");