1. 断点调试
2. 基本介绍
3. 断点调试快捷键 327
F7(跳入) F8(跳过) shift+F8(跳出) F9(resume,执行到下一个断点)
F7: 跳入方法内
F8: 逐行执行代码.
shift+F8: 跳出方法
4. 断点调试应用
4.1 看一下变量变化情况 328
下断点在行号出单击鼠标左键,再次单击则取消
代码在com.stulzl.debug_.包中
package com.stulzl.debug_;
//看一下变量变化情况 328
public class Debug01 {
public static void main(String[] args) {
//演示逐行执行
int sum=0;
for (int i = 0; i < 5; i++) {
sum+=i;
System.out.println("i="+i);
System.out.println("sum="+sum);
}
System.out.println("退出for……");
}
}
代码执行中例图
4.2 看一下数组越界的异常 329
代码在com.stulzl.debug_.包中
package com.stulzl.debug_;
public class Debug02 {
public static void main(String[] args) {
int[] arr = {1, 10, -1};
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("退出 for");
}
}
因为i <= arr.length得3了
4.3 如何追源代码 330
进入原码配置
代码在com.stulzl.debug_.包中
package com.stulzl.debug_;
import java.util.Arrays;
//如何追源代码 330
public class Debug03 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20 , 100};
//我们看看 Arrays.sort 方法底层实现.->Debug
Arrays.sort(arr);//执行到此行按f7跳入方法内
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
4.4 演示执行下一断点 331
package com.stulzl.debug_;
import java.util.Arrays;
public class Debug04 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20 , 100};
//我们看看 Arrays.sort 方法底层实现.->Debug
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("hello100");
System.out.println("hello200");
System.out.println("hello300");
System.out.println("hello400");
System.out.println("hello500");
System.out.println("hello600");
System.out.println("hello700");
}
}
5. 断点调试练习 直接看332
代码在com.stulzl.debug_exercise.包中
package com.stulzl.debug_exercise;
public class DebugExercise01 {
public static void main(String[] args) {
//创建对象的流程信息
//1.加载Person类信息
//2.初始化(2.1默认初始化,2.2显示出初始化,2.3构造器初始化)
//3.返回对象得地址
Person jack = new Person("jack",20);
System.out.println(jack);
}
}
class Person{
private String name;
private int age;
public Person(String name, int age) {
= name;
this.age = age;
}
//重写toStirng
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}