当前位置: 首页 > news >正文

Java基础 6.22

1.断点调试

一个实际需求

  • 在开发中,新手程序员在查找错误时,这时老程序员就会温馨提示,可以用断点调试,一步一步地看源码执行的过程,从而发现错误所在
  • 重要提示:在断点调试过程中,是运行状态,是以对象的运行类型来执行的

断点调试介绍

  • 断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后就可以一步一步往下调试,调试的过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下,进行分析从而找到这个Bug
  • 断点调试时程序员必须掌握的技能
  • 断点调试也能帮助我们查看Java底层源代码的执行过程,提高程序员的Java水平

断点调试的快捷键

  • F7 跳入 F8 跳过 shift+F8 跳出 F9 resume执行到下一个断点
  • F7:跳入方法内 F8:逐行执行代码 shift+F8:跳出方法

断点调试的应用案例

package com.logic.debug_;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循环...");}
}
package com.logic.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循环...");}
}
package com.logic.debug_;import java.lang.reflect.Array;
import java.util.Arrays;public class Debug03 {public static void main(String[] args) {int[] arr = {1, -1, 10, -20, 100};//我们看看Arrays.sort方法底层实现->Debug//演示如何追源码 看看Java设计者是怎么实现的//小技巧 将光标放在某个变量上 可以看到最新的数据Arrays.sort(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}}
}
package com.logic.debug_;import java.lang.reflect.Array;
import java.util.Arrays;//演示执行到下一个断点,同时支持动态的下断点/去断点
public class Debug04 {public static void main(String[] args) {int[] arr = {1, -1, 10, -20, 100};Arrays.sort(arr);for (int i = 0; i < arr.length; i++) {System.out.println(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");}
}
package com.logic.debug_;//使用断点调试的方法 追踪下一个对象创建的过程 Person[name age constructor]
//使用断点调试 查看动态绑定机制的如何工作
public class DebugExercise {public static void main(String[] args) {//创建对象的流程//1.加载Person类信息//2.初始化 默认初始化 显式初始化 构造器初始化//3.返回对象的地址Person person = new Person(20, "logic");System.out.println(person);}
}class Person {public String name;public int age;public Person(int age, String name) {this.age = age;this.name = name;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}
package com.logic.poly_.dynamic_;public class DynamicBinding {public static void main(String[] args) {A a = new B();System.out.println(a.sum());System.out.println(a.sum1());}
}class A {public int i = 10;public int sum() {return getI() + 10;}public int sum1() {return i + 10;}public int getI() {return i;}
}class B extends A {public int i = 20;//    public int sum() {
//        return i + 20;
//    }public int getI() {return i;}
//    public int sum1() {
//        return i + 10;
//    }
}

相关文章:

  • 【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
  • 系列一、windows中安装RabbitMQ
  • 硬件面经-具身机器人通用技术要求
  • 逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
  • 信息安全管理与评估2025湖北卷路由部分答案
  • pyhton基础【14】函数四
  • 爬虫001----介绍以及可能需要使用的技术栈
  • multiprocessing.pool和multiprocessing.Process
  • DeepSeek:中国AI开源先锋的技术突破与行业革新
  • Unity中的Mathf.Clamp
  • 嵌入式软件面经(一)Q: 什么是Modbus协议?它有哪些特点?
  • C++ unordered_map基础概念、对象创建、赋值操作、大小操作、数据插入、数据删除、数据修改、代码练习 1 2
  • 面试150 加油站
  • 【已解决】 数据库INSERT操作时,Column count doesn’t match value count at row 1
  • Bytemd@Bytemd/react详解(编辑器实现基础AST、插件、跨框架)
  • 算法导论第二十五章 深度学习的伦理与社会影响
  • leetcode51.N皇后:回溯算法与冲突检测的核心逻辑
  • python案例练习
  • LLMs基础学习(八)强化学习专题(5)
  • 常见的软件测试模型有哪些?各自的特点是什么?
  • 做宣传网站要多少钱/优化推广服务
  • 怎么自己建设个网站/就业seo好还是sem
  • c2c网站建设策划书/站长收录
  • 威客网站设计/站长平台
  • 湖南做网站 多少钱磐石网络/公众号推广平台
  • 临汾网站建设 吕梁网站建设/三只松鼠软文范例500字