Java 数组

本贴最后更新于 1707 天前,其中的信息可能已经时移世改

数组定义和访问

数组的定义

  • 格式一:
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
  • 数组定义格式详解:
    • 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
    • [] : 表示数组。
    • 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
    • new:关键字,创建数组使用的关键字。
    • 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
    • [长度]:数组的长度,表示数组容器中可以存储多少个元素。
    • 注意:数组有定长特性,长度一旦指定,不可更改。
      • 和水杯道理相同,买了一个 2 升的水杯,总容量就是 2 升,不能多也不能少。
  • 举例:

定义可以存储 3 个整数的数组容器,代码如下:

int[] arr = new int[3];
  • 格式二:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
  • 举例:

定义存储 1,2,3,4,5 整数的数组容器。

int[] arr = new int[]{1,2,3,4,5};
  • 格式三:
数据类型[] 数组名 = {元素1,元素2,元素3...};
  • 举例:

定义存储 1,2,3,4,5 整数的数组容器

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

数组的访问

  • 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从 0 开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。
  • 格式:
数组名[索引]
  • 数组的长度属性: 每个数组都具有长度,而且是固定的,Java 中赋予了数组的一个属性,可以获取到数组的 长度,语句为: 数组名.length ,属性 length 的执行结果是数组的长度,int 类型结果。由次可以推断出,数 组的最大索引值为 数组名.length-1 。
  • 索引访问数组中的元素:
    • 数组名[索引]=数值,为数组中的元素赋值
    • 变量=数组名[索引],获取出数组中的元素
public static void main(String[] args) {
	//定义存储int类型数组,赋值元素1,2,3,4,5
	int[] arr = {1,2,3,4,5};
	//为0索引元素赋值为6
	arr[0] = 6;
	//获取数组0索引上的元素
	int i = arr[0];
	System.out.println(i);
	//直接输出数组0索引元素
	System.out.println(arr[0]);
}

数组原理内存图

Java 虚拟机的内存划分

  • JVM 的内存划分:

20200314111330667.png

区域名称 作用
寄存器 给 CPU 使用,和我们开发无关。
本地方法栈 JVM 在使用操作系统功能的时候使用,和我们开发无关。
方法区 存储可以运行的 class 文件。
堆内存 存储对象或者数组,new 来创建的,都存储在堆内存。
方法栈 方法运行时使用的内存,比如 main 方法运行,进入方法栈中执行。

数组在内存中的存储

  • 一个数组内存图
public class Demo01ArrayOne {
    public static void main(String[] args) {
        int[] array = new int[3]; // 动态初始化
        System.out.println(array); // 地址值
        System.out.println(array[0]); // 0
        System.out.println(array[1]); // 0
        System.out.println(array[2]); // 0
        System.out.println("==============");
        // 改变数组当中元素的内容
        array[1] = 10;
        array[2] = 20;
        System.out.println(array); // 地址值
        System.out.println(array[0]); // 0
        System.out.println(array[1]); // 10
        System.out.println(array[2]); // 20
    }
}

20200314111538560.png

  • 两个数组内存图
public class Demo02ArrayTwo {
    public static void main(String[] args) {
        int[] arrayA = new int[3];
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 0
        System.out.println(arrayA[2]); // 0
        System.out.println("==============");
        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 10
        System.out.println(arrayA[2]); // 20
        System.out.println("==============");
        int[] arrayB = new int[3];
        System.out.println(arrayB); // 地址值
        System.out.println(arrayB[0]); // 0
        System.out.println(arrayB[1]); // 0
        System.out.println(arrayB[2]); // 0
        System.out.println("==============");
        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB); // 地址值
        System.out.println(arrayB[0]); // 0
        System.out.println(arrayB[1]); // 100
        System.out.println(arrayB[2]); // 200
    }
}

20200314111913336.png

  • 两个引用指向一个数组
public class Demo03ArraySame {
    public static void main(String[] args) {
        int[] arrayA = new int[3];
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 0
        System.out.println(arrayA[2]); // 0
        System.out.println("==============");
        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 10
        System.out.println(arrayA[2]); // 20
        System.out.println("==============");
        // 将arrayA数组的地址值,赋值给arrayB数组
        int[] arrayB = arrayA;
        System.out.println(arrayB); // 地址值
        System.out.println(arrayB[0]); // 0
        System.out.println(arrayB[1]); // 10
        System.out.println(arrayB[2]); // 20
        System.out.println("==============");
        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB); // 地址值
        System.out.println(arrayB[0]); // 0
        System.out.println(arrayB[1]); // 100
        System.out.println(arrayB[2]); // 200
    }
}

20200314112048175.png

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • 数组
    8 引用 • 7 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...