Java数组详解

Posted xianya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数组详解相关的知识,希望对你有一定的参考价值。

一、数组的概念

  •      数组是多个相同类型数据的组合,实现对这些数据的统一管理
  •      数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
  •      数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量

二、一维数组

     动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行

     静态初始化:在定义数组的同时就为数组元素分配空间并赋值

     注意:数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化

             数组一旦初始化,其长度是不可变的

package com.yyx.pratice;

public class JavaPratice {
    public static void main(String[] args) {
       /*
        * 对于基本数据类型byte short int long 
        * 而言:创建数组后,默认值为0
        */
        byte[] byteArr=new byte[2];
        byteArr[0]=1;
        for(byte b:byteArr) {
            System.out.print(b+" ");
        }        
        System.out.println();
        
        /*
         * 对于基本数据类型float double 
         * 而言:默认值为0.0
         */
        float[] floatArr=new float[2];
        floatArr[0]=2.1f;
        for(float f:floatArr) {
            System.out.print(f+" ");
        }
        System.out.println();
        
        /*
         * 对于基本数据类型char而言:其默认值为空格
         */
        char[] charArr=new char[2];
        charArr[0]=‘a‘;
        for(char c:charArr) {
            System.out.print(c+" ");
        }
        System.out.println();
        
        /*
         * 对于基本数据类型boolean而言,创建数组后,其默认值为false
         */
        boolean[] booleanArr=new boolean[2];
        for(boolean c:booleanArr) {
            System.out.print(c+" ");
        }
        System.out.println();
        
        /*
         * 对于引用类型的变量构成的数组而言:其默认值为null
         */
        String[] strArr=new String[2];
        for(String str:strArr) {
            System.out.print(str+" ");
        }
    }
}

三、二维数组

package com.yyx.pratice;

public class JavaPratice {
    public static void main(String[] args) {
        /*
         * 一维数组初始化
         */
        int[] arr1 = { 13, 35, 56 };
        int[] arr2 = new int[] { 3, 5, 8 };// 静态初始化
        int[] arr3 = new int[3];
        arr3[0] = 6;// 动态初始化
        arr3[1] = 9;
        arr3[2] = 12;

        /*
         * 二维数组初始化
         */
        String[][] str1 = { { "Jack", "Tom" }, { "Lucy", "Jerry" } };
        String[][] str2 = new String[][] { { "Jack", "Tom" }, { "Lucy", "Jerry" } };// 静态初始化
        String[][] str3 = new String[2][2];
        str3[0][0] = "Jack";
        str3[0][1] = "Tom";
        str3[1][0] = "Lucy";
        str3[1][1] = "Jerry";
        for (int i = 0; i < str3.length; i++) { //控制行数
            for (int j = 0; j < str3[i].length; j++) { //控制列数
                System.out.print(str3[i][j] + " ");
            }
        }
    }
}

四、数组在内存中的分配

     1.一维数组的内存结构

技术分享图片

    2.二维数组的内存结构

技术分享图片

五、数组的常见异常   

  •        空指针异常  NullPointerException
  •        索引越界异常 ArrayIndexOutOfBoundsException
package com.yyx.pratice;

public class JavaPratice {
    public static void main(String[] args) {
        /*
         * 空指针异常
         */
        //第一种
        try {
            boolean[] booleanArr=new boolean[3];
            booleanArr=null;
            System.out.println(booleanArr[0]);            
        } catch (Exception e) {
            e.printStackTrace();
        }    
        //第二种
        try {            
            String[] strArr=new String[3];
            System.out.println(strArr[0].toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        //第三种
        try {
            int[][] intArr=new int[3][];
            System.out.println(intArr[2][0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        /*
         * 索引值越界
         */
        try {
            int[] arr=new int[3];
            arr[4]=0;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 六、操作数组的工具类Arrays

      Arrays常用的方法有sort()、toString(),其他方法可以查看类库

package com.yyx.pratice;

import java.util.Arrays;

public class JavaPratice {
    public static void main(String[] args) {
        int[] arr = new int[] { 2, 6, 3, 5, 9 };
        Arrays.sort(arr);// 数组排序
        System.out.println(Arrays.toString(arr));
    }
}

 

以上是关于Java数组详解的主要内容,如果未能解决你的问题,请参考以下文章

集合详解及代码测试

Java线程池详解

Java线程池详解

Java 线程池详解

Java数组超详解

Java线程池详解