32-Java数组内存图、常见使用问题、以及IDEA的Debug工具使用

一、Java内存分配介绍

  • 方法区
  • 本地方法栈
  • 寄存器

在这里插入图片描述

通过例子来介绍细节
package com.app.memory;

public class ArrayDemo1 {
    public static void main(String[] args) {
        // 目标:理解Java内存分配介绍

        // 定义一个变量,初始值10
        int a = 10;

        // 定义一个数组,元素值:11,22,33
        int[] arr = new int[]{11,22,33};

        System.out.println(arr);

        // 修改数组中的元素值
        arr[0] = 44;
        arr[1] = 55;
        arr[2] = 66;

        // 访问数组中的元素值
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}
输出结果:
[I@119d7047
44
55
66

在这里插入图片描述

二、两个数组变量指向同一个数组对象

package com.app.memory;

public class ArrayDemo2 {
    public static void main(String[] args) {
        // 目标:理解两个变量指向同一个对象
        // 1.定义数组1,元素值:11,22,33
        int[] arr1 = {11,22,33};
        // 2.定义数组2,将数组1赋值给数组2
        int[] arr2 = arr1;

        // 3.输出数组1,2的内存地址
        System.out.println(arr1);
        System.out.println(arr2);

        // 4.修改数组1的某个元素值为99
        arr1[1] = 99;

        // 5.同时访问两个数组,你会发现,都是一样的
        System.out.println(arr1[1]);
        System.out.println(arr2[1]);
    }
}
输出结果:

[I@119d7047
[I@119d7047
99
99

原理

在这里插入图片描述

三、数组使用的常见问题

  • 问题1:如果访问的元素位置超过最大索引,执行时会出现 ArrayIndexOutOfBoundsException(数组索引越界异常)

    // 例子
    int[] arr = new int[]{11, 22, 33};
    //                     0   1   2
    System.out.println(arr[2]);		// 访问该数组最后一个元素值
    
    // System.out.println(arr[3]);		// 出现数组索引越界异常,索引是从0开始:0 1 2 3,因此 3 属于第四个元素值
    
  • 问题2:如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现 NullPointerException(空指针异常)

    // 例子
    int[] arr = null;
    
    // 输出数组内存地址
    System.out.println(arr);	// 输出结果为:null
    
    // 调用数组属性功能: length——>查看元素个数
    // System.out.println(arr.length);	// 出现空指针异常,因为是null,没有指针,指向啥都不知道!
    

四、Debug工具

  • IDEA自带的断点调试(排错)工具,可以控制代码从断点开始一行一行的执行,然后详细观看程序执行的情况。
Debug工具基本使用步骤:
  1. 在需要控制的代码行左侧,点击一下,形成断点

在这里插入图片描述

  1. 选择使用Debug方式启动程序,启动后程序会在断点处暂停

在这里插入图片描述

  1. 控制代码一行一行的往下执行

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值