Java随堂笔记05-Java数组

Java随堂笔记05-Java数组

数组的定义

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们

数组初始化

int[] array = {1,2,3,4,5};   //静态初始化

int[] array = new int[10];  //动态初始化,包含默认初始化
int[0]=10;
//...

数组的四个基本特点

  • 其长度是确定的。数组一旦被创建,其大小就不可再被改变
  • 其元素必须是相同类型的,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

数组本身就是对象,Java中的对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

多维数组

二维数组

int[4][2] array = {{1,2},{3,4},{5,6},{7,8}};

//遍历二维数组
for(int i = 0;i < array.length;i++){
    for(int j = 0;i < array[i].length;j++){
        System.out.print(array[i][j] + " ");
    }
}

Arrays类

常用方法举例

Arrays.sort(a);  //给a数组排序
Arrays.fill(a,0);   //用0填充a数组
Arrays.fill(a,2,4,1);  //用1填充a数组下标[2,4)
Arrays.toString(a);    //打印数组a 即将a数组的所有元素以一个String类型的字符串返回
//...

稀疏数组

public class Dome{
    public static void main(String[] args) {
        int[][] arrays = new int[11][11];
        arrays[1][2]=1;
        arrays[2][3]=2;
        System.out.println("原数组:");
        for (int i = 0; i <arrays.length ; i++) {
            for (int j = 0; j <arrays[i].length ; j++) {
                System.out.print(arrays[i][j]+"\t");
            }
            System.out.println();
        }

        int sum=0;
        for (int i = 0; i <arrays.length ; i++) {
            for (int j = 0; j <arrays[i].length ; j++) {
                if(arrays[i][j]!=0){
                    sum++;
                }
            }
        }
        int[][] arrays2 = new int[sum+1][3];
        arrays2[0][0]=arrays.length;
        arrays2[0][1]=arrays.length;
        arrays2[0][2]=sum;

        int count = 0;
        for (int i = 0; i <arrays.length ; i++) {
            for (int j = 0; j <arrays[i].length ; j++) {
                if(arrays[i][j]!=0){
                    count++;
                    arrays2[count][0]=i;
                    arrays2[count][1]=j;
                    arrays2[count][2]=arrays[i][j];
                }
            }
        }

        System.out.println("====================");
        System.out.println("稀疏数组:");
        for (int i = 0; i <arrays2.length ; i++) {
            for (int j = 0; j <arrays2[i].length ; j++) {
                System.out.print(arrays2[i][j]+"\t");
            }
            System.out.println();
        }

        System.out.println("===========================");
        System.out.println("复原后:");
        int[][] arrays3 = new int[arrays2[0][0]][arrays2[0][1]];
        for (int i = 1; i < arrays2.length ; i++) {
            arrays3[arrays2[i][0]][arrays2[i][1]] = arrays2[i][2];
        }
        for (int i = 0; i <arrays3.length ; i++) {
            for (int j = 0; j <arrays3[i].length ; j++) {
                System.out.print(arrays3[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

结果:

Java随堂笔记05-Java数组

上一篇:Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之17.Session


下一篇:Java基础(13)-Arrays类