如何正确使用debug

今天由长沙黑马程序员的老师给你们讲解一下如何正确的使用debug:
java

1、Debug课程引言程序员

咱们在写程序的时候,会常常出现一些问题也叫bug(如程序运行报错,结果与预期不符等),面对这些问题,特别是对于初学者而言,会有很大的困扰,在解决问题的过程当中会消耗大量的时间,由于没有掌握解决问题的方式。微信

因此我以为有必要开发一套课来提升你们解决问题的能力,由于无论对于如今学习而言,仍是对于往后的工做而言,解决bug是一个很是重要的能力。由于bug无处不在,能够说bug是伴随咱们开发的伴侣,只有咱们能征服这些bug,才能征服开发工做。工具

2、Bug分类学习

程序中的错误大体分为两种,编译时错误和运行时错误。spa

1. 编译时错误debug

这种问题基本都是一些语法错误,哪里有红色波浪线,哪里就有问题。调试

a. 类名,方法名,变量名写错了资源

b. 标点符号写错了开发

c. 括号不匹配

d. 修改了代码,没有保存

e. 方法中少了return语句

以上这些问题都是最最最最最最基本的语法格式问题,必须知道怎么解决,这不是咱们这次课程的重点。

2. 运行时错误

程序运行时出现的bug才是咱们课程的重点。

程序运行时出现错误的缘由就比较复杂了,有下面几种状况

a. 程序不能正常执行,报错(如NullPointerException)

b. 程序能够正常执行,但结果不对

上述这些bug出现的缘由就比较复杂,特别是那种看起来没问题,执行也没报错,可是结果就是不对的代码,很头疼。这个时候就须要咱们用到专业的Debug工具来调试程序。

3、Debug应用

为了让你们可以熟悉debug调试工具,提升解决bug的能力,在基础班的各个阶段分别设置一个有bug案例,用debug调试的方式来查找问题。

有句老话叫“授人以鱼不如授人以渔”,经过学习这些案例,但愿你们之后遇到问题首先可以本身解决。你们毕业以后工做了,拿着别人的工资,那个时候遇到了bug,谁能帮你解决,只能本身想办法解决。

1. Debug案例1

//基本类型做为参数

publicstaticvoid show(int a){

a=a+1;

}

//引用类型做为参数

publicstaticvoid show(int[] arr){

arr[0]+=1;

}

2. Debug案例2

/*

* 分析如下需求,并用代码实现(循环,if):

(1)打印1到100以内的整数,但数字中包含9的要跳过

(2)每行输出5个知足条件的数,之间用空格分隔

(3)如:1 2 3 4 5

*/

publicstaticvoid function3(){

int count=0;

for(int i=1;i<100;i++){

if(!(i%10==9||i/10%10==9)){

System.out.print(i+" ");

count++;

}

if(count%5==0){

System.out.println("");

}

}

}

执行结果以下:在38和40之间多了一个空行

.....省略......

34 35 36 37 38

40 41 42 43 44

.....省略......

3. Debug案例3

public class Fu {

int a;

public Fu() {

a=20;

show();

}

public void show(){

System.out.println(a);

}

}

public class Zi extends Fu{

int a;

public Zi() {

a=20;

}

public void show(){

System.out.println(a);

}

public static void main(String[]args){

Zi z=new Zi();

z.show();

}

}

打印结果为:

0

20

4. Debug案例4

下面字符串中”java”出现的次数

“sunjavahpjavaokjavajjavahahajavajavagoodjava”

String s ="sunjavahpjavaokjavajjavahahajavajavagoodjava";

int count = 0;

int index=0;

while (s.indexOf("java") != -1) {

index = s.indexOf("java", index);

if (index != -1) {

index = index + 1;

count++;

}

}

System.out.println(count);

5. Debug案例5

public static void main(String[] args) {

getDir(newFile("C:\"));

}

/*

* 打印输出指定目录下全部的.java文件(包含子目录)

*/

public static void getDir(File dir){

File[] files = dir.listFiles();

for(File f:files){

if(f.isDirectory()){

getDir(f);

}else{

if(f.getName().endsWith(".java")){

System.out.println(f);

}

}

}

}

Exception in thread "main" java.lang.NullPointerException

atcn.itcast.demo1.Demo4.getDir(Demo4.java:15)

atcn.itcast.demo1.Demo4.getDir(Demo4.java:17)

atcn.itcast.demo1.Demo4.getDir(Demo4.java:17)

atcn.itcast.demo1.Demo4.main(Demo4.java:7)

若是有须要了解更多的学习资源能够关注一下微信订阅号“黑马程序员长沙中心”。