本文共 5362 字,大约阅读时间需要 17 分钟。
dataType[] arrayRefVar;或dataType arrayRefVar[];
dataType[] arrayRefVar = new dataType[arraySize];
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQbKgL0a-1619405285523)(E:\Java\JavaDoc\mdDoc\12.数组\storage.png)]
int[] a = { 1,2,3,4,5,6};//值类型Man[] mans = { new Man(), new Man()};//引用类型
int[] b = new int[10];b[0] = 10;
int[] arrays = { 1,2,3,4};//没有下标, 经常用于打印输出, 不适合修改元素for (int array : arrays){ System.out.println(array);}
public static void printArray (int[] arrays){ for (int i = 0; i < arrays.length; i++){ System.out.println(arrays[i]); }}public static void main (String[] args){ int[] arrays = { 1,2,3,4} printArrays(arrays)}
//打印数组public static void printArray (int[] arrays){ for (int i = 0; i < arrays.length; i++){ System.out.println(arrays[i]); }}//反转数组public static int[] reverse (int[] arrays){ int[] result = new int[arrays.length]; //反转的操作 for (int i = 0, j = result.length - 1; i < arrays.length;i++, j--){ result[j] = arrays[i] } return result;}public static void main (String[] args){ int[] arrays = { 1,2,3,4} int[] reverse = reverse(arrays); printArrays(arrays);}
int[][] array = new int[2][5]; //两行五列的数组int[][] arrays = { { 1,2}, { 3,4}, { 5,6}; for (int i = 0; i
数组的工具类 java.util.Arrays
由于数组对象本身并没有什么方法可以供我们调用, 但API中提供了一个工具类Arrays供我们使用, 从而可以对数据对象进行一些基本的操作
Arrays类中的方法都是static修饰的静态方法, 在使用的时候可以直接使用类名进行调用, 而不用使用对象来调用 (是不用, 不是不能)
具有以下常用功能:
int[] a = { 1,2,3,4,32,6253};System.out.println(Arrays.toString(a));//打印数组所有元素
/*比较数组中两个相邻的元素, 如果第一个数比第二个数大, 我们就交换它们的位置, 每一次比较,都会产生出一个最大, 或者是最小的数字, 下一轮可以少一次排序, 依次循环, 直到结束*/ public static int[] sort(int[] array){ for (int i = 0; i < array.length-1; i++){ for (int j = 0; j < array.length-1-i; j++){ if (array[j+1]>array[j]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } return array; }
public static int[] sort(int[] array){ int temp; for (int i = 0; i < array.length-1; i++){ boolean flag = false; for (int j = 0; j < array.length-1-i; j++){ if (array[j+1]>array[j]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; flag = true; } if (flag == false){ break; } } } return array;}
需求: 编写五子棋游戏中, 有存盘退出和续上盘的功能
分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据
解决: 稀疏问题
当一个数组中大部分元素为0, 或者为同一值的数组时, 可以使用稀疏数组来保存该数组
稀疏数组的处理方式是:
public static void main (String[] args){ int[][] array = new int[11][11]; array[1][2] = 1; array[2][3] = 2; //打印数组 for (int[] ints: array){ for (int aint: ints){ System.out.print(aint+"\t"); } System.out.println(); } //转化为稀疏数组 //获取有效值个数 int sum = 0; for (int i = 0; i < 11; i++){ for (int j = 0; j < 11; j++){ if (array[i][j] != 0){ sum++; } } } //建立稀疏数组 int[][] sparceArray = new int[sum][3]; sparceArray[0][0] = array.length; sparceArray[0][1] = array[0].length; sparceArray[0][2] = sum; //遍历二维数组, 将非零的值, 存放到稀疏数组中 int row = 1; for (int i = 0; i < array.length; i++){ for (int j = 0; j < array[0].length; j++){ if (array[i][j] != 0){ sparceArray[row][0] = i; sparceArray[row][1] = j; sparceArray[row][2] = array[i][j]; row++; } } } //打印稀疏数组 for (int[] ints: sparceArray){ for (int aint: ints){ System.out.print(aint+" \t"); } System.out.println(); } //稀疏数组还原数组 //读取行列值和有效值, 创建新数组 int[][] reArray = new int[sparceArray[0][0]][sparceArray[0][1]]; //遍历查找有效值 for (int i = 1; i <= sparceArray[0][2]; i++){ reArray[sparceArray[i][0]][sparceArray[i][1]] = sparceArray[i][2]; } //打印还原后的数组 for (int[] ints: reArray){ for (int aint: ints){ System.out.print(aint+"\t"); } System.out.println(); } }
转载地址:http://zvvzb.baihongyu.com/