2数组和简单算法

数组和简单算法

1 数组的特点

  • 有序排列的
  • 数组属于引用数据类型的变量,数组的元素既可以是基本数据类型也可以是引用数据类型
  • 数组对象会在内存中开辟一整块连续的空间
  • 数组的长度一旦确定就不能修改

2 一维数组的使用

 		//一维数组的声明和初始化
        int[] ids=new int[]{1001,1002,1003,1004};//静态初始化
        String[] names=new String[5];//动态初始化 初始化和赋值分开进行
        //一旦初始化后长度就确定了

        //通过角标方式调用
        names[0]="fao";
        names[1]="zzz";
        names[2]="zhuzhu";
        names[3]="haaha";
        names[4]="lli";

        //获取数组的长度:length
        System.out.println(names.length);

        //遍历数组
        for (int i=0;i<names.length;i++){
            System.out.println(names[i]);
        }

        //数组元素默认初始化值
        //数组元素是整型:0
        //浮点型:0
        //char型: 0 而非'0‘
        //boolean型:false
        //是引用数据类型时(String): null

3 数组的内存解析


4 二维数组的使用和内存解析

		//二维数组声明和初始化
        int[][] arr1=new int[][] {{1,2,3},{4,5,6}}; //静态初始化
        String[][] arr2=new String[3][2];//动态初始化
        String[][] arr3=new String[3][];//动态初始化2
        int[] arr5={1,2,3,4,5};//类型锯断,不标准
        int[][] arr4=new int[][]{{1,2,3},{4,5},{7,8,9}};

        //调用指定位置元素
        System.out.println(arr1[0][1]);//2
        arr3[1]=new String[4];
        System.out.println(arr3[1][0]);//null 前面不写这边就会报错

        //获取数组的长度
        System.out.println(arr4.length);//3
        System.out.println(arr4[1].length);//2
        System.out.println();

        //如何遍历
        for (int i=0;i<arr4.length;i++){
            for (int j=0;j<arr4[i].length;j++){
                System.out.println(arr4[i][j]);
            }
        }

        //数组元素默认初始化值
        //二维数组分为外层数组元素和内层数组元素
        int[][] arr10=new int[4][3];
        System.out.println(arr10[0]);//一个地址值[I@119d7047
        System.out.println(arr10[0][0]);//0
        System.out.println(arr10);//[[I@776ec8df 一个二维数组地址值

        float[][] arr11=new float[4][3];
        System.out.println(arr11[0]);//一个地址值
        System.out.println(arr11[0][0]);//0.0
        System.out.println(arr11);//一个二维数组地址值

        int[][] arr12=new int[4][];
        System.out.println(arr12[1]);//null 内存中还没指定所以为null
        //System.out.println(arr12[1][0])报错 空指针异常

5 Arrays工具类的使用

​ java.util.Arrays类即为操作数组的工具类,包含了用来操作数组的各种方法

  • boolean equals(int[] a,int[] b) 判断两个数组是否xiangdeng

  • String toString(int[] a) 输出数组信息

  • void fill (int[] a, int val) 将指定值填充到数组之中

  • void sort(int[] a) 对数组进行排序

  • int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值

           //boolean equals()
            int[] arr1=new int[]{1,2,3};
            int[] arr2=new int[]{3,2,1};
            boolean isEquals= Arrays.equals(arr1,arr2);
            System.out.println(isEquals);//false
     
            //String toString():
            System.out.println(Arrays.toString(arr1));//[1, 2, 3]
    
            //void fill()
            Arrays.fill(arr1,10);
            System.out.println(Arrays.toString(arr1));//[10, 10, 10]
    
            //void sort()
            Arrays.sort(arr2);
            System.out.println(Arrays.toString(arr2));//[1, 2, 3]
    
            //int binarySearch()
            int[] arr3=new int[]{1,2,3,4,5,6,7};
            int index=Arrays.binarySearch(arr3,4);
            System.out.println(index);//3
    

6 常见数组异常

  • 数组角标越界异常: ArrayIndexOutOfBoundsException
  • 空指针异常: NullPointerException
posted @ 2021-10-16 18:02  fao99  阅读(33)  评论(0)    收藏  举报