25天掌握java基础(四)——数组、Debug

Demo04-数组、Debug

1.数组

1.1数组定义方式

1.静态初始化数组

  • 完整格式:数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素3};
  • 简化格式:数据类型[] 数组名 = {元素1,元素2,元素3};
    • “数据类型[] 数组名"也可以写成"数据类型 数组名[]”
    • 什么类型的数组存放什么类型的数据,否则会报错
    • 数组一旦定义出来,程序执行的过程中长度和类型就固定了

数组变量名中存储的是数组在内存中的地址,数组是引用类型

double[] scores = {99.5, 88.0, 75.5};
System.out.println(scores);

输出结果是[D@1540e19d,[代表指向的是数组,D代表存储的数据是double类型

2.动态初始化数组

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

数组内没有初始化的数据访问时为默认值

元素默认值规则:

数据类型明细默认值
基本类型byte、short、char、int、long
float、double
boolean
0
0.0
false
引用类型类、接口、数组、Stringnull
double[] scores = new double[3]; // [0.0, 0.0, 0.0]
scores[0] = 99.5;
System.out.println(scores[0]);//输出99.5
System.out.println(scores[2]);//输出0.0


String[] names = new String[90];
names[0] = "迪丽热巴";
System.out.println(names[0]);//输出迪丽热巴
System.out.println(names[1]);//String是引用类型,默认值为null,所以这里输出null

注意字符数组的元素默认值是0

char[] chars = new char[100];
chars[0] = 97;
System.out.println(chars[0]);//输出a
System.out.println(chars[1]);//输出乱码
System.out.println((int)chars[1]);//输出0

第二个输出乱码是因为这是一个字符数组,存放的数据是字符类型,所以输出时会输出一个0对应的字符(0对应的字符是不可打印字符,所以乱码,可打印字符32~127),需要强制类型转换才能输出0

1.2数组内存图

1.java内存分配,数组内存图

java内存分配介绍:

  • 栈:方法运行时所进入的内存,变量也是在这里
  • 堆:new出来的东西会在这块内存中开辟空间并产生地址
  • 方法区:字节码文件加载时进入的内存
  • 本地方法栈
  • 寄存器

在这里插入图片描述

  1. 编译后的class文件加载到方法区
  2. 将main方法提取到栈内存中运行
  3. 读取int a = 10;时先读取int a立马在栈内存中开辟一块空间a用来存放整数,然后读取=10,将10这个整数放到刚刚开辟的空间中
  4. 读取int [] arr = new int[]{11, 22, 33};时先读取int [] arr立马在栈内存中开辟一块空间arr用来后续存放整数类型数组的地址,然后读取= new int[]{11, 22, 33},在堆内存中开辟一块空间用来存放整数类型数组的数据,并将这块空间的地址赋值给arr

2.两个变量指向同一个数组

public class Test8 {
    public static void main(String[] args) {
        int[] arr1 = {11,22,33};

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

        //输出结果一样
        System.out.println(arr1);
        System.out.println(arr2);
    }
}

1.3数组注意事项

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

int[] arr = {};
System.out.println(arr);//仍会输出堆内存中存放数组的地址
System.out.println(arr);//数组索引越界异常

2.如果数组变量中没有存储数组的地址,而是null,那么在访问数组信息时就会出现NullPointException(空指针异常)

int[] arr = new int[]{11,22,33};
arr = null;
System.out.println(arr);//输出null
System.out.println(arr.length);//出现NullPointException异常

2.Debug工具

Debug时IDEA自带的断点调试(排错)工具,可以控制代码从断点开始一行一行的执行,然后详细观察程序执行的情况

使用步骤:

  • 在需要控制的代码行左侧点击一下,形成断点
  • 选择使用Debug方式启动程序,启动后程序会在断点暂停
  • 控制代码一行一行的往下执行

假如打了断点然后Debug,此时不想再继续Debug了可以点Resume Program(F9)直接运行完该程序

假如打了断点1然后Debug,此时想直接跳到下一个断点,那么可以再打一个断点2,然后点Resume Program(F9)直接将程序运行至下一个断点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

认真生活的灰太狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值