数组的基本格式
//先定义一个数组的类型,再创建数组的空间。 int num[]; num[]=new int[10];//这里创建10个数组 //或者是将其合并在一起写 int num[]=new int[10];
例子:
package com.method; public class Demo07 { public static void main(String[] args) { // 或者是 // int[] num = new int[10]; int num []; num = new int[10]; num[0]=1; num[1]=2; num[2]=3; num[3]=4; num[4]=5; num[5]=6; num[6]=7; num[7]=8; num[8]=9; num[9]=10; //令所有数相加。 int resout = 0; for (int i = 0; i < num.length; i++) { resout = resout+ num[i]; } System.out.println(resout); } }静态初始化以及动态初始化
//静态初始化 int[] num = {1,2,3,4,5}; //动态初始化 int[] num; num=new int[5];
静态初始化在创建num这个数组时,已经定义了数组元素的值。
但是动态初始化中,创建了数组的五个元素后,元素的值并未确定,成为动态初始化,此时元素默认值为0.
稀疏数组
在二维数组中,会存在以下情况,存在很多为“0”的元素,而非零元素则不多。
如果,将其中的非零元素单独记录出来,则可以达到节省空间的作用。
例子存在那么一个数组:a
public class Demo13 { public static void main(String[] args) { //一个11行11列的数组, int[][] a = new int[11][11]; a[1][1] =1; a[2][2] =2; for (int[] ints : a) { for (int anInt : ints) { System.out.print(anInt+" "); } System.out.println('t'); } } }
现在将这个数组转换为稀疏数组,(拓展:如何将稀疏数组还原?)
package com.method; public class Demo13 { public static void main(String[] args) { int[][] a = new int[5][6]; a[1][1] =1; a[2][2] =2; for (int[] ints : a) { for (int anInt : ints) { System.out.print(anInt+" "); } System.out.println('t'); } //创建一个稀疏数组,用来储存数组a的数据。 //第一步:获取稀疏数组必要的参数:不为零的值的个数。 int num =0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if (a[i][j] != 0){ num++; } } } int[][] b =new int[num+1][3]; b[0][0]=5; b[0][1]=6; b[0][2]=num; //第二步:获取不为零的数的行位置,列位置,以及值。将其填入稀疏数组b当中。 int count = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if (a[i][j] != 0){ count++; b[count][0]=i; b[count][1]=j; b[count][2]=a[i][j]; } } } //第三步,输出稀疏数组b。 System.out.println("-----------------------------"); for (int[] ints : b) { for (int anInt : ints) { System.out.print(anInt+" "); } System.out.println('t'); } //拓展:如果将这个稀疏数组解压,如何操作。 System.out.println("-----------------------------"); //1.利用稀疏数组b的数据,创建新数组c int[][] c = new int[b[0][0]][b[0][1]]; for (int i = 1; i < b.length; i++) { for (int j = 0; j < b[i].length; j++) { c[b[i][0]][b[i][1]]=b[i][2]; } } //2.输出还原数组c System.out.println("-----------------------------"); for (int[] ints : c) { for (int anInt : ints) { System.out.print(anInt+" "); } System.out.println('t'); } } }
最终的输出结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)