
个人简介
> 📦个人主页:轻狂客_零度的主页
> 🏆学习方向:JAVA后端开发
> 📣种一棵树最好的时间是十年前,其次是现在!
> ⏰往期文章:【Java基础】程序流程控制
> 🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。
活动地址:CSDN21天学习挑战赛
目录
定义数组的时候直接给数组赋值
1. 静态初始化数组的格式
数据类型[ ] 数组名 = { 元素1,元素2,元素3... };
int[ ] a = {1,2,3,4,5};
数据类型[ ] 数组名 = new 数据类型[ ] { 元素1,元素2,元素3... };
int[ ] a = new int[ ]{1,2,3,4,5};
2. 数组是属于什么类型,数组变量名中存储的是什么?
引用数据类型,存储的数组在内存中的地址信息
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据
1. 数组的动态初始化格式
数据类型[ ] 数组名 = new 数据类型[ 长度 ];
int[ ] a = new int[5];
2. 两种数组定义时的特点和场景有什么区别
当前已经知道存入的元素值,用静态初始化
当前还不清楚要存入哪些数据,用动态初始化
3. 动态初始化数组元素的默认值是什么样的
byte、short、int 、char、long类型数组元素的默认值都是0
float、double类型数组元素的默认值都是0.0
boolean类型数组元素的默认值是false、String类型数组元素的默认值是null
1. 3 数组的创建过程
1. 在内存中开辟连续的空间,用来存放数据
2. 给数组完成初始化过程,给每个元素赋予默认值
3. 数组完成初始化会分配一个唯一的地址值
4. 把唯一的地址值交给引用类型的变量a去保存
5. 如果想要操作数组中的元素,可以根据变量保存的地址找到数组,然后根据下标来操作数组的具体元素
数组名保存的是数组的地址值,不是数组中每一个具体的元素,数组名是一个引用类型的变量
1. toString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这 个方法,如果不用,打印是数组的地址值
2. sort(数组名),给数组进行排序
3. copyOf(要复制的数组,新数组的长度)
如果新的长度大于原数组的长度–数组的扩容
如果新的长度小于原数组的长度–数组的缩容
如果新的长度等于原数组的长度–普通的复制
注意:不管是什么长度,都不是修改原数组,而是创建新数组
1. 如果只是想查看数组中有哪些元素,直接使用System.out.println(Arrays.toString(数组名));就可以
2. 如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的操作,就需要对数组进行遍历
3. 遍历:把数组中的所有元素,从头到尾逐个“过一遍”
4. 通过循环遍历数组,所以循环中的循环变量代表的是数组的下标
- package com.example.basic;
- /*本类用于复习数组的操作*/
- public class TestArray {
- public static void main(String[] args) {
- //需求1:求出数组中所有元素之和
- //f1();
- //需求2:求出数组中所有元素的最大值
- f2();
- }
-
- private static void f2() {
- //需求2:求出数组中所有元素的最大值
- //1.定义一个数组
- int[] a = {10,20,98,40,55};
- //2.定义一个变量,用来存储结果,也就是数组中所有元素的最大值
- int max = a[0];//这个位置不能写0,应该是数组中的第一个元素
- //3.遍历数组,依次拿出数组中的每一个元素与之前设定的元素做比较
- for (int i = 0; i < a.length; i++) {
- //4.判断当前遍历到的元素,与max谁大
- if(a[i]>max){//如果当前遍历到的元素比max大
- max = a[i];//就把遍历到的这个元素的值赋值给max
- }
- }
- //5.循环结束,输出数组中最大的值
- System.out.println("数组中的最大值为:"+max);
- }
-
- private static void f1() {
- //需求1:求出数组中所有元素之和
- //1.定义一个数组
- int[] a = {12,12,22,22,22};
- //2.定义一个变量,用来保存最终求和的结果
- int sum = 0;
- //3.通过数组的遍历,遍历数组中的每一个元素,然后累加
- for (int i = 0; i < a.length; i++) {
- sum = sum + a[i];
- }
- System.out.println("数组累加所有元素之和为:"+sum);
- }
- }
-
int [ ] arr = new int [ ] {11,22,33};System.out.println(arr[2]);
arr = null;System.out.println(arr); //null// System.out.println(arr.length); //出现异常
Debug是一种程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
Debug调试,又被称为断点调试,断点是一个标记,告诉我们从哪里开始查看。操作流程具体分为以下几个步骤:
1. 如何加断点
2. 如何运行加了断点的程序
3. 看哪里
4. 点哪里

5. 如何删除断点
与增加断点相同。

Show Execution Point(显示执行点):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行

Step Over(步过) :一行一行地往下走,如果这一行上有方法不会进入方法。

Step Into(步入):如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法

Force Step Into (强制步入):能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

Step Out (步出):从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

(将执行点移回方法调用,从堆栈中删除当前方法帧)
Drop Frame(退回断点):从当前位置退回到之前断点处。有时候当我们步入方法体之后,还想回退到方法体外,点这个按钮后,断点重新回到方法体之外。在继续还是可以再次进到方法内。

Run to Cursor (运行到光标处):你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

Evaluate Expression计算表达式:使用这个操作在调试过程中计算某个表达式的值,而不用再去打印信息。

重启

Stop:关闭程序。

修改运行配置

Resume Program:恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,使用这个操作运行到下一个断点(即第25行),如果下面没有断点了,再使用这个操作,则运行完整个流程。

Pause Program:暂停程序,启用Debug。

View Breakpoints:查看所有断点。

Mute Breakpoints:隐藏断点,选择这个后,所有断点变为灰色,断点失效。再次点击,断点变为红色,有效。