来自 操作系统 2020-01-28 06:28 的文章
当前位置: 美高梅游戏平台网站 > 操作系统 > 正文

JAVA 一维数组

class

数组

A13 {

JVM内存划分

}

A:内存划分

public

JVM对自己的内存划分为5个区域

class A {

* a: 寄存器:内存和CUP之间

public static void main(String[] arg) {

* b: 本地方法栈: JVM调用了系统中的功能

A13[] a1 =

* c: 方法和数据共享: 运行时期class文件进入的地方

new A13[1]; // 1

* d: 方法栈:所有的方法运行的时候进入内存

A13[][] a2 =

* e: 堆:存储的是容器和对象

new A13[2][1]; // 2

数组的内存

A13[][][] a3 =

A: 数组的内存

new A13[3][3][3]; // 3

int[] x;            // 声明一个int[]类型的变量

System.

x = new int[100]; // 创建一个长度为100的数组

out.print(a3[2][2][2]); // 4

接下来,通过两张内存图来详细地说明数组在创建过程中内存的分配情况。

a1[0] =

第一行代码 int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。

new A13(); // 5

变量x会占用一块内存单元,它没有被分配初始值

a2[0] = a2[1] = a1;

第二行代码 x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。

// 6

* 在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化

a3[0] = a3[1] = a3[2] = a2;

使用索引访问数组的元素(重要)

// 7

A: 使用索引访问数组的元素

System.

组中有100个元素,初始值都为0。数组中的每个元素都有一个索引(也可称为角标),要想访问数组中的元素可以通过“x[0]、x[1]、……、x[98]、x[99]”的形式。

out.print(a3[2][2][2]); // 8

需要注意的是,数组中最小的索引是0,最大的索引是“数组的长度-1”

}

数组的length属性(重要)

}
        以前考的。程序如上,问答案是什么?结果是能够编译,但运行时会出现数组越界的异常。这个异常发生在有注释8的那一行,就是System.out

A: lenth属性

.print(a3[2][2][2]);这一行。
        这个程序大体可以分为两段。第一段,前4行,就是定义三个数组,然后第4行打印出a3[2][2][2]。很明显,我们只是定义了数组,给了它一个长度,但是里面并没有放东西进去,所以运行到这里,打印出来是null。后半部分从第5行开始,分别给数组里面添加元素,然后再输出a3[2][2][2]。这个时候,将会出现数组越界的异常。
        为什么上半部分没有报异常,后半部分就出现异常了呢?这道题考的其实是你对Java数组的理解。a3数组是一个三维的,但是,我们应该这么来理解:即,先将a3看成一个一维数组,这样就有a3[0], a3[1], a3[2]。然后每一个子元素中放有一个二维数组a2。注意,a2虽然是一个二维数组,其实也可以这样来看,即a2拥有a2[0], a2[1],然后每一个元素中含有一个a1数组。所以,真正的结构是这样的:

a 在Java中,为了方便我们获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。

数组a1: a1[0

b 求数组的长度

]

public class ArrayDemo01 {

数组a2: a2[0][0

public static void main(String[] args) {

]

int[] arr; // 声明变量

            a2[1][0

arr = new int[3]; // 创建数组对象

]

System.out.println("arr[0]=" + arr[0]); // 访问数组中的第一个元素

数组a3: a3[0]:a2[0][0],a2[1][0

System.out.println("arr[1]=" + arr[1]); // 访问数组中的第二个元素

]

System.out.println("arr[2]=" + arr[2]); // 访问数组中的第三个元素

            a3[1]:a2[0][0],a2[1][0

System.out.println("数组的长度是:" + arr.length); // 打印数组长度

]

}

            a3[2]:a2[0][0],a2[1][0

}

]

为数组的元素赋值(重要)

        这样应该能看出来了吧,a3[2][2][2]的确是会出现异常的。这道题的确很迷惑人,需要注意。

A: 为数组的元素赋值

a: 如果在使用数组时,不想使用这些默认初始值,也可以显式地为这些元素赋值。

赋值过的元素已经变为新的数值,没有赋值的元素默认初始化的数值

b: 案例

public class ArrayDemo02 {

public static void main(String[] args) {

int[] arr = new int[4]; // 定义可以存储4个整数的数组

arr[0] = 1; // 为第1个元素赋值1

arr[1] = 2; // 为第2个元素赋值2

// 下面的代码是打印数组中每个元素的值

System.out.println("arr[0]=" + arr[0]);

System.out.println("arr[1]=" + arr[1]);

System.out.println("arr[2]=" + arr[2]);

System.out.println("arr[3]=" + arr[3]);

}

}

数组的定义_2(重要)

A: 定义数组格式2

a: 数组初始化

动态初始化 : 在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化。

1、类型[] 数组名 = new 类型[长度];

int[] arr = new int[4];

本文由美高梅游戏平台网站发布于操作系统,转载请注明出处:JAVA 一维数组

关键词: