Java数组(三)


目录

数组特点

数组申明

数组常见算法

Arrays工具类

常见异常

数组特点

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

数组申明

申明方式:



//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[] ids;//声明
ids = new int[]{1001,1002,1003,1004};

//动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
int[] arr = {1,2,3,4,5};//类型推断

默认初始化值:

  • 数组元素是整型:0
  • 数组元素是浮点型:0.0
  • 数组元素是char型:0或'\u0000',而非'0'
  • 数组元素是boolean型:false
  • 数组元素是引用数据类型:null

数组常见算法

数组反转

//方法一:
    for(int i = 0;i < arr.length / 2;i++){
            String temp = arr[i];
            arr[i] = arr[arr.length - i -1];
            arr[arr.length - i -1] = temp;
        }
        
//方法二:
        for(int i = 0,j = arr.length - 1;i < j;i++,j--){
            String temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

冒泡排序

        for(int i = 0;i < arr.length - 1;i++){
            
            for(int j = 0;j < arr.length - 1 - i;j++){
                
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                } }}        

快速排序

        if(low>high){
            return;
        }
        i=low;
        j=high;
        //temp就是基准位
        temp = arr[low];
 
        while (i<j) {
            //先看右边,依次往左递减
            while (temp<=arr[j]&&i<j) {
                j--;          }
            //再看左边,依次往右递增
            while (temp>=arr[i]&&i<j) {
                i++;          }
            //如果满足条件则交换
            if (i<j) {
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }
        }
        //最后将基准为与i和j相等位置的数字交换
         arr[low] = arr[i];
         arr[i] = temp;
        //递归调用左半数组
        quickSort(arr, low, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, high);

常用Arrays工具类

  • boolean equals(int[] a,int[] b):判断两个数组是否相等。
  • String toString(int[] a):输出数组信息。
  • void fill(int[] a,int val):将指定值填充到数组之中。
  • void sort(int[] a):对数组进行排序。

常见异常

数组角标越界异常:ArrayIndexOutOfBoundsException

空指针异常:NullPointerException