java大白入门实例18之《数组的定义与使用--详解》

数组的基本概念:

        如果说现在要求你定义100个整型变量,那么如果按照之前的做法,可能现在定义的的结构如下:

int i1, i2, i3, ... i100;

【数组】指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配

数组动态初始化:

那么我们既然不想那么麻烦的一个个去定义变量,这就出现了数组动态初始化,可以动态分配数组的大小空间,有以下几种方式:

(1)未开辟数组空间数据类型  数组名称[] = null    

(2)未开辟数组空间数据类型[]  数组名称 = null

(3)开辟数组空间数据类型[]  数组名称 = new  数据类型[长度]

(4)开辟数组空间 数据类型  数组名称[] = new  数据类型[长度]

 开辟了数组空间之后,就可以进行如下操作:

(1)通过索引访问元素,数组名称 [索引]索引范围就是0-数组的长度-1,若访问的索引超出这个范围,就会报java.lang.ArrayIndexOutOfBoundsException 这样的异常信息。

(2)在 java中提供有一种动态取得数组长度的方式:数组名称.length

(3)通常使用for循环去访问数组这样的有序集合。

定义数组例子:

        使用最基本的方法实现:

public class java_18 {
    public static void main(String[] args) {
//        定义一个int型数组
        int data[] = new int[2];//分配一个长度为2的数组
        data[0] = 1;
        data[1] = 2;
        for (int i=0;i<data.length;i++){
            System.out.println(data[i]);
        }
    }
}

  

        分步实现(先声明后分配空间):

public class java_18 {
    public static void main(String[] args) {
//        定义一个int型数组
        int data[];//或者int data[] = null;
        data = new int [2];
        data[0] = 1;
        data[1] = 2;
        for (int i=0;i<data.length;i++){
            System.out.println(data[i]);
        }
    }
}

注意:在数组使用之前一定要开辟空间(实例化),如果使用了没有开辟空间的数组,则一定会出现 NullPointerException 异常信息

数组引用传递(关于数组的复制):

 定义一个空数组,将已定义的数组赋值给这个空数组,对这个新数组进行操作,原来的数组数据也会被改变。

public class java_18 {
    public static void main(String[] args) {
//        定义一个int型数组
//        int data[] = new int[2];//分配一个长度为2的数组
        int data[];//或者int data[] = null;
        int temp[] = null;
        data = new int [2];
        data[0] = 1;
        data[1] = 2;
        temp = data;
        temp[0] = 10; //此时就发生了引用传递,data数组里面的值也被改变
        for (int i=0;i<temp.length;i++){
            System.out.println(data[i]);
            System.out.println(temp[i]);
        }
    }
}

 引用传递的本质是:同一块堆内存空间可以被不同的栈内存所指向。

 数组静态初始化:

顾名思义就是希望数组在定义的时候可以同时出现设置内容,那么就可以采用静态初始化完成。

例如:

int arr[] = {1,2,3,4,5};

或者完整语法模式:

int arr1[] = new int[]{1,2,3,4,5};

二维数组(初略了解一下):

那么对二维数组的定义有两种声明形式:

(1)数组的动态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数];

(2)数组的静态初始化:数据类型 对象数组[][] = new 数据类型[][]{ {值, 值,…}, {值, 值,…},…};

public class java_18 {
    public static void main(String[] args) {
//        二维数组
//        法一  动态初始化
        int data[][] = new int[2][2];
        data[0][0] = 1;
        data[0][1] = 2;
        data[1][0] = 3;
        data[1][1] = 4;
//        法二  静态初始化
        int data1[][] = new int[][]{
                {1,2},{3,4}
        };
        for (int i=0;i<data.length;i++){
            for (int j=0;j<data[i].length;j++){
                System.out.println(data[i][j]);
            }
        }
    }
}

哎,还是js定义数组的方便,想怎么定义就怎么定义,数组大小和类型都非常自由,哈哈哈

上一篇:java17--判断一个数是否为质数

下一篇:java19--输出杨辉三角

猜你喜欢

转载自blog.csdn.net/qq_41579104/article/details/120784348