Java入门基础学习笔记30——数组在计算机中的执行原理

发布于:2024-05-21 ⋅ 阅读:(153) ⋅ 点赞:(0)

数组在计算机中的执行原理

数组的执行原理、java程序的执行原理

package cn.ensource.memory;

public class ArrayDemo1 {
    public static void main(String[] args) {
        // 掌握普通变量、数组在计算机中的执行原理
        // java程序在计算机中的执行过程

        int a = 20;
        System.out.println(a);

        int[] arr = new int[]{11, 22, 33};
        System.out.println(arr);
        System.out.println(arr[1]);

        arr[0] = 44;
        arr[1] = 55;
        arr[2] = 66;

        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

JAVA内存分配介绍:

1)方法区:将编译后的字节码文件放到方法区中。

2)栈内存:方法运行时所进入的内存,变量也是在这里。main就是在这里执行的。

3)堆内存:new出来的东西会在这块内存中开辟空间并产生地址。new的数组是放在堆里的。

4)本地方法栈;

5)程序计数器;

运行java程序,主要看JVM中包含的哪几个部分内存区域?

1)方法区

2)栈内存;

3)堆内存;

简单说:int a = 20; int[] arr=new int[3] 这两行代码的执行原理?

a是变量,直接放在栈中,a变量中存储的数据就是20这个值。

new int[3] 是创建一个数组对象,会在堆内存中开辟区域存储3个整数。

arr是变量,在栈中,arr中存储的是数组对象在堆内存中的地址值。

基本类型:存储的是具体的值。

引用变量:存储的是地址。

多个变量指向同一个数组的问题。

package cn.ensource.memory;

public class ArrayDemo2 {
    public static void main(String[] args) {
        // 目标:认识多个变量指向同一个数组对象的形式,并掌握注意事项
        int[] arr1 = {11, 22, 33};

        // 把int类型的数组变量arr1赋值给int类型的数组变量arr2
        int[] arr2 = arr1;    // 赋值的是地址

        System.out.println(arr1);    // 地址:[I@4eec7777
        System.out.println(arr2);    // 地址:[I@4eec7777

        arr2[1] = 99;
        System.out.println(arr1[1]);
    }
}

多个变量修改的都是同一个数组对象中的数据。 

使用数组常见的问题:

如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象。

arr2 = null;     //arr2不再指向任何数组对象,去访问数据、访问长度就会出现Bug。

会报空指针异常:NullPointExcepiton。

 索引越界异常:

程序运行后,将会抛出ArrayIndexOutOfBoundsException数组越界异常。在数据开发中,数组越界异常是不能出现的,一旦出现就必须修改我们的代码。


网站公告

今日签到

点亮在社区的每一天
去签到