0


6.深入理解Java对数组定义与使用 —— Java SE

         ![](https://img-blog.csdnimg.cn/201c8277a1b0489c8cbace78b5b5b1fa.png) ![](https://img-blog.csdnimg.cn/0a7d5656332b4416ac21c7aa291abd13.png)

1. 深入理解数组的基本概念

1.1 理解Java中的数组

java的数组和C语言中的数组作用一样,都是为了表示相同元素的一种类型的集合。

并且数组中的空间在内存中都是连续的。

1.2 创建数组再初始化

下面直接看,数组创建初始化的几种形式

public class TestDemo02 {
    public static void main(String[] args) {
        //1.动态初始化:创建数组时直接指定数组中元素个数
        int[] array = new int[10];
        //2.静态初始化:在创建数组时直接不指定数组元素个数,
        //而是将数组内容指定,编译器会自动确定数组长度
        int[] array1 = new int[]{0,2,3,4,6,7};
        //也可以简写一下,把后面的new int[]省略
        //这是因为编译器,编译时会把这个自动还原出来
        int[] array2 = {0,3,5,6,2,6,9};   
    }
}

建议如果确定数组内容那就使用第二种,更简单,如果不确定就使用第一种

当然了,对数组初始化也可以分为两步:

public class TestDemo02 {
public static void main(String[] args) {
    //1.动态初始化,分两步
    int[] array1;
    array1 = new int[10];
    //2.静态初始化,分两步(不能省略new int[])
    int[] array2;
    array2 = new int[]{4,6,2,8,9};
}
}

如果数组中存储元素类型为引用类型,默认值为null

1.3 数组的使用

1.3.1要访问数组中的元素

可以通过数组下标访问任意位置的元素,因为数组在内存中是一段连续的空间,空间的编号是从0开始的。所以可以随机访问,任意位置的元素

大家可以看

通过数组下标果然可以,访问数组元素,并且也可以通过数组下标来改变数组中的元素

这里再说明一种情况,如果访问的数组越界,就会报这样的错误,所以在访问数组时,就要注意这种情况

1.3.2 遍历数组元素

遍历数组元素就将数组中的元素访问一遍,比如访问一遍然后打印出来

这里就可以使用前面学过的循环了,比如for循环

public class TestDemo02 {
public static void main(String[] args) {
    int[] array = new int[]{10,20,60,45,67};
    for(int i = 0;i<5;i++){
        System.out.println(array[i]);
    }
}

这里再也可以通过** 数组名.length **来获取数组的长度

public class TestDemo02 {
public static void main(String[] args) {
    int[] array = new int[]{10,20,60,45,67};
    for(int i = 0;i<array.length;i++){
        System.out.println(array[i]);
    }
}

遍历数组也可以使用 for-each

但这种方法遍历出来的数组没有下标,有一定局限性

public class TestDemo02 {
public static void main(String[] args) {
    int[] array = {1,56,23,45,88};
    for(int x:array){
        System.out.println(x);
    }
}
}

2. 数组是引用类型

2.1 初始JVM的内存分布

内存中需要存储很多的数据,比如

程序中的常量保存;运行时代码需要加载在内存上,并且中间产生的数据也要放在内存中,

所以有很多种的数据要存储在内存中,为了提高内存中的存储效率,

所以在JVM中对内存按照功能进行了管理

2.2 区分基本类型变量和引用类型变量

public class TestDemo02 {
public static void func() {
    int a = 18;
    int b = 88;
    int[] array = new int[]{1,56,2,51};
}
}

基本数据类型,就是直接创建的变量,然后在变量空间里存放给赋的值。

也就是a,b, 在对应的栈帧空间里赋予18.88

引用数据类型创建的变量,一般称为对象的引用,它在空间中存储的对象是所在空间的地址

也就是array数是引用类型,然后内部保存的是数组在堆空间中的首地址

下面看道题,细致分析一下,会输出什么


public static void func(String[] args) {
    int[] array1 = new int[3];
    array1[0] = 10;
    array1[1] = 20;
    array1[2] = 30;
    
    int[] array2 = new int[]{1,2,3,4,5};
    array2[0] = 100;
    array2[1] = 200; 
    
    array1 = array2;
    array1[2] = 300;
    array1[3] = 400; 
    array2[4] = 500;
    for (int i = 0; i < array2.length; i++) {
        System.out.println(array2[i]);
    }
}

2.3认识Java中的NULL

java中NULL 表示空引用,也就是不指向对象的引用

表示一个无效的内存位置,所以不能对这个内存进行任何读写的操作,不然会报错


3. 实际使用数组

我们刚开始学数组,就是说数组是一些相同元素的一种类型集合

所以数组就是用来保存数据的

3.1 数组作为函数参数

数组array作为函数的参数,传递给print

public class TestDemo02 {
    public static void print(int[] array){
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
    }
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};
        print(array);
    }
}

下面再看一个

** 引用数据类型(本质实际上传的是地址)**

(1)修改自己的指向

** (2)通过当前引用修改原来的值**

3.2 数组作为函数的返回值


4. 认识二维数组

二维数组本质上就是一维数组,其每个元素又是一个一维数组。

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

下面看一下,二维数组定义的三种方式

    int[][] array1 = {{1,2,3},{2,8,6}};
    int[][] array2 = new int[2][3];
    int[][] array3 = new int[][]{{1,2,3},{2,8,6}};

下面看一下二维数组打印的方式

public class TestDemo02 {
public static void main(String[] args) {
    int[][] array1 = {{1,2,3},{2,8,6}};
    for (int i = 0; i < array1.length; i++) {
        for (int j = 0; j < array1[i].length; j++) {
            System.out.print(array1[i][j]+" ");
        }
        System.out.println();
    }
}
}

5.一些数组练习题

大家可以看一下,我的另一篇博客,里面有一些数组习题很好的分析

点这个 Java 数组学习之练题篇


标签: java 开发语言

本文转载自: https://blog.csdn.net/m0_58761900/article/details/124514956
版权归原作者 快到锅里来呀 所有, 如有侵权,请联系我们删除。

“6.深入理解Java对数组定义与使用 &mdash;&mdash; Java SE”的评论:

还没有评论