Java SE之基础篇——IDEA中DeBug调试以及综合案例练习
Posted 一计之长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java SE之基础篇——IDEA中DeBug调试以及综合案例练习相关的知识,希望对你有一定的参考价值。
前言
上篇文章我们给大家介绍了java中比较重要的一个知识点——方法的应用和使用。主要给大家介绍了方法的定义和使用,包括无参方法定义和使用、带参方法定义和使用、带返回值方法的定义和使用以及在使用方法的时候应该注意的一些事项以及我们把一般在定义方法的时候常用的一些格式。另外还介绍了方法的重载以及方法的参数传递。最后我们通过两个综合的案例给大家将所学的方法中的相关知识进行了相应的串联。最后通过一张思维导图将本文所学的方法中的相关知识进行了总结,给读者一个清晰的学习思路,并且也间接地教读者在学习一门新的编程语言的时候我们应该如何去总结相应的知识点,从而在读者脑海中形成一个知识框架,这点对于初学者来说是比较重要的。本文给大家介绍的就是在IDEA中通过DeBug来调试我们的代码,这个功能在我们日后的开发以及学习中是至关重要的,因为我们写的代码不可能一直是正确的,当代码处理问题之后,我们就可以通过这个模式很好的找出我们代码的问题所在。其实我们写的代码有两种错误,一种是编译错误,顾名思义就是连编译也无法通过的,比如常见的空指针异常、数组越界等典型的编译器可以识别的错误,这个时候我们编译器就会直接告诉我们具体的错误在哪里。但是还有一种错误就是功能错误,这种错误是最隐晦的,编译能通过,编译器也不报错,但是就是达不到我们功能所预实现的功能。这种是我们以后在写代码过程中反而经常遇见的,这个时候,我们就得通过DeBug模式进行调试了,看看每一行代码程序是怎么运行的,到底返回给了我们什么结果。因此,这个模式至关重要的,需要我们熟练掌握其用法。
在IEDA中,我们执行程序有两种模式,一种是直接运行,也就是我们在前面直接给出的运行结果图,它不会给我们每行代码的运行结果,只给我们整个程序最终的运行结果。还有一种是DeBug模式,其实建议大家在今后的学习,最好用DeBug模式启动我们的程序,因为我们会清晰地看到程序在运行的整个过程,每一行代码做了什么事情,既能发现我们代码的错误,更重要的是能够帮助我们初学者学习java执行流程,对我们今后学习Java Virtual Machine(JVM)有很大的帮助,当然也对我们阅读别人的代码有较快的掌握。因此,这个模式是特别重要的,这也就是我为什么会花一整篇文章去给大家介绍这个功能的原因。在我们学习Java过程中,我们不仅要学习java相关知识,更要学习别人优秀的代码撰写,这点非常重要,只有经常阅读别人写的代码,才能让自己的代码写的更加的具有健壮性和鲁棒性。在刚开始的时候,我们在撰写代码只要能够实现相关需求的功能即可,当然这也是第一步,但是我们不能一直这么写,那样的话,我们只能是处于一种初级程序员的水准,我们一定要不断优化我们的代码,不断地向高级程序员进阶。其实不仅仅是java开发工程师,其他语言开发工程师也是一样的。另外还有一点就是,我们在阅读本文的时候,其实不仅仅要看DeBug工具是如何使用的,更重要的是理解代码是怎么看的,怎么分析问题所在的,当然这与我们写代码以及分析代码的能力相关,不是一蹴而就的,不过我们现在就要养成这种分析问题的能力。
首先我们给大家介绍的就是DeBug模式的相关操作。
一、DeBug模式
我们前面也介绍了,DeBug模式其实就是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。我们接下来通过一个案例来详细教大家DeBug模式操作流程。首先我们给出测试的案例,具体实现如下:
public class DebugDemo
public static void main(String[] args)
//定义两个变量
int i = 10;
int j = 20;
//求和
int sum = i + j;
//输出结果
System.out.println("sum:" + sum);
首先我们给出其整体的运行结果,也就是我们经常说的run
模式下的,具体的运行结果如下:
接下来我们详细给大家介绍针对这段代码我们是如何调试的。
首先我们要选择断点,选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。具体的操作及效果如下:
接着,我们就是通过DeBug模式来运行我们的这段代码,在代码区域右键Debug执行,具体的操作及效果图如下:
然后就是-看Debugger窗口,具体看如图所示的内容:
同时也要看Console窗口,具体看的内容如下:
接下来就是让debug进行执行我们相关的语句,点 Step Into (F7)
这个箭头,也可以直接按F7,具体效果如下:
最后就是删除断点了,我们如果是单一的断点的话,可以直接选择要删除的断点,单击鼠标左键即可,具体如下:
当然,如果我们代码比较长的话,不可能只有一个断点,如果断点比较多的话,那么我们删除起来就比较复杂,因此,我们可以一次性全部删除,具体操作步骤如下:
这就是我们整个代码调试的过程,学起来很简单的,接下来就是需要大家不断地练习的一个过程,我们在今后的开发中一定会经常用到这个模式,所以希望大家定要好好掌握。我们在文章的开头也提到过,这个模式至关重要,我们关键要掌握如何通过这个模式分析我们把的代码,这就需要我们通过大量的练习以及分析代码的能力慢慢的积累了,不可能因为这一篇文章就会掌握,这篇文章只是一个入门,初步教大家如何去调试。为了方便大家练习,我们在给出两个测试案例供大家练习,案例都很简单,主要目的是为了让大家练习。
案例一: 查看循环求偶数和的执行流程
由于其实现比较简单,再说又是为了大家练习Debug模式,因此,这里就不阐述实现的思路,我们直接给出实现的代码,具体的实现内容如下:
public class DebugTest01
public static void main(String[] args)
//定义求和变量
int sum = 0;
//循环求偶数和
for (int i = 1; i <= 10; i++)
if (i % 2 == 0)
sum += i;
//输出结果
System.out.println("1-10之间的偶数和是:" + sum);
最后就是我们给出该代码执行的最后结果,具体如下:
案例二:查看方法调用的执行流程
同理,我们也是只给出实现的过程,不阐述实现的思路,具体的实现过程如下:
import java.util.Scanner;
/*
查看方法调用的执行流程
*/
public class DebugTest02
public static void main(String[] args)
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入第一个整数:");
int a = sc.nextInt();
System.out.println("请输入第二个整数:");
int b = sc.nextInt();
//调用方法
int max = getMax(a, b);
//输出结果
System.out.println("较大的值是:" + max);
//获取两个数的较大值
public static int getMax(int a, int b)
if (a > b)
return a;
else
return b;
最后的执行结果如下:
这就是我们在IDEA中DeBug调试的全部内容,通过这两个案例,相信大家对DeBug的具体操作流程已经有一个相对清晰的认识,但是这两个是远远不够的,在今后代码的执行过程中,希望大家有意无意的可以通过DeBug模式去分析一些别人的代码,这样的话,你会对java内部的运行机制会很清晰,并且随着我们不断地分析代码,我们分析解决问题的能力也会得到很大的提升。接下来,就给大家介绍一些综合案例的练习。
二、综合案例
1、减肥计划
案例一:输入星期数,显示今天的减肥活动
- 周一:跑步
- 周二:游泳
- 周三:慢走
- 周四:动感单车
- 周五:拳击
- 周六:爬山
- 周日:好好吃一顿
我们刚看到这个需求的时候,首先就是通过if---else if
来解决,具体的思路如下:
1:键盘录入一个星期数,用一个变量接收
2:对星期数进行判断,这里用 if 语句实现
3:在对应的语句控制中输出对应的减肥活动
根据以上的思路,我们给出以下的代码实现:
import java.util.Scanner;
public class Test01
public static void main(String[] args)
//键盘录入一个星期数,用一个变量接收
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数:");
int week = sc.nextInt();
//对星期数进行判断,这里用 if 语句实现
if (week < 1 || week > 7)
System.out.println("你输入的星期数有误");
else if (week == 1)
System.out.println("跑步");
else if (week == 2)
System.out.println("游泳");
else if (week == 3)
System.out.println("慢走");
else if (week == 4)
System.out.println("动感单车");
else if (week == 5)
System.out.println("拳击");
else if (week == 6)
System.out.println("爬山");
else
System.out.println("好好吃一顿");
具体的实现结果如下:
上面的代码已经实现我们的功能,但是很明显代码过于冗余,接下来,我们通过用switch语句将其实现,具体思路如下:
1:键盘录入一个星期数,用一个变量接收
2:对星期数进行判断,这里用 switch 语句实现
3:在对应的语句控制中输出对应的减肥活动
这里,我们多次用到java的第三方包,因此需要我们导包,我们有两种方式进行导包。
第一种就是手动导包;import java.util.Scanner;
第二种就是快捷键导包; Alt+Enter
第三种就是自动导包
通过以上思路的描述,我们对其进行代码实现,具体如下:
import java.util.Scanner;
public Java SE之基础篇——面向对象