当前位置: 首页 > 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;
//    }
}
http://www.lryc.cn/news/573752.html

相关文章:

  • 开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装
  • 通达信【千军趋势决策系统】幅图指标
  • idea2023+zulu-jdk+maven3.9.10
  • 创建 Vue 3.0 项目的两种方法对比:npm init vue@latest vs npm init vite@latest
  • 新冠疫情分布动态展示图
  • 多设备Obsidian笔记同步:WebDAV与内网穿透技术高效实现教程
  • Javaweb - 3 CSS
  • 没掌握的知识点记录
  • 基于全志T133-s3 busybox 设置登录用户名及密码
  • 【队列】-----【简单的数据结构】
  • leetcode:面试题 08.06. 汉诺塔问题
  • 【unitrix】 4.1 类型级加一操作(Add1.rs)
  • 大模型应用:如何使用Langchain+Qwen部署一套Rag检索系统
  • 【教程】不同架构(armv7l等)下载Miniconda安装包
  • RA4M2开发IOT(11)----ADC检测电压
  • 如何用AI开发完整的小程序<10>—总结
  • webRTC源码配置和编译 + Vscode Intelligence配置
  • 9大策略深度解析MySQL多表JOIN性能优化
  • Python-break、continue与else语句
  • 实战记录:minapp框架下跨机型接口调用顺序引发的兼容性问题
  • 如何仅用AI开发完整的小程序<6>—让AI对视觉效果进行升级
  • AAudio:Android 低延迟音频处理的核心组件
  • WEB3开启 Hardhat 自动验证有什么意义
  • 【设计模式】策略模式 在java中的应用
  • 排序算法-python实现
  • docker私有仓库部署配置学习
  • 深度解析云计算网络架构:VLAN+OVS+Bonding构建高可靠虚拟化平台
  • LINUX 622 SAMBA
  • Macbook M4芯片 MUMU模拟器安装使用burpsuit抓包教程APP
  • SpringCloudGateway(spel)漏洞复现 Spring + Swagger 接口泄露问题