java中的数组以及内存图解

1.数组数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器(数组既可以存储基本数据类型也可以存储引用数据类型)
一维数组的定义格式:
          格式1  数据类型 [ ] 数组名;
          格式2 数据类型   数组名 [ ];
int [ ] a; 定义了一个int类型的数组
int a[ ]; 定义了一个int类型的a数组
2.数组的初始化
  所谓数组的初始化就是为数组中数组元素分配内存空间,并未每个数组元素赋值。
  Java中的数组必须先初始化,然后才能使用。
初始化的分类

  • 动态初始化:只指定长度,由系统给出初始值。
     动态初始化的格式 int[ ] arr = new int[3];定义了一个int类型的数组 arr,这个数组可以存放3个int类型的值。
  • 静态初始化:给出初始化值,由系决定长度。
     静态初始化的格式 int [ ] arr = {1,2,3,4,5,6};定义了一个int类型的数组 arr,这个数组存放了6个int类型的值。

java中的数组的内存图解(一个一维数组)

package org.westos.demo3;

public class array1 {
    public static void main(String[] args) {
        int [] arr = {23,24,34};
        System.out.println(arr);
        System.out.println(arr [0]);
        System.out.println(arr [0]);
        System.out.println(arr [0]);
    }
}

运行结果为:

[I@1540e19d
23
23
23

在这里插入图片描述
int [ ][ ] arr = new int[3][ ];与int [ ][ ] arr = new int[3][2 ];的区别
在这里插入图片描述
另外例如 int [3][ ] a = {{1,2,3},{2,3,4},{2,3,4}};
    int [3 ][ ] b = a;这种方法只是增加了一个a的引用,a和b指向的是同一个数组,对其中任何一个的修改必定会影响到另一个。
例如:

package org.westos.demo3;

public class array1 {
    public static void main(String[] args) {
        int [] a = {23,24,34};
        int []b=a;
        System.out.println(a);
        System.out.println(b);
        b[0] = 12;
        b[2] = 14;
        System.out.println(a[0]);
        System.out.println(a[1]);
        System.out.println(a[2]);
        System.out.println(b[0]);
        System.out.println(b[1]);
        System.out.println(b[2]);
        System.out.println(a.length);
        System.out.println(b.length);
    }
}

运行结果为:

[I@1540e19d
[I@1540e19d
12
24
14
12
24
14
3
3

内存图为:
在这里插入图片描述
二维数组
  二维数组其实就是每一个元素就是一维数组的数组
二维数组的格式
  数据类型 [ ][ ] 变量名 = new int [m][n];
  其中m标识的是这个二维数组有多少个元素,必须协商,n可以不写。
下面的这两种方式也是可以定义二维数组的但是不建议使用
数据类型 数组名[][] = new 数据类型[m][n];
数据类型[] 数组名[] = new 数据类型[m][n];
另外需要注意的是数组的下角标是从0开始的,最后一个元素的下角标可以用 数组名.length - 1来表示。这样数组中的遍历,反向输出等等掌握原理就可以编出程序。

猜你喜欢

转载自blog.csdn.net/xupt_rl/article/details/89147137
今日推荐