Java常用的输出调试技巧
--------siwuxie095
Eclipse 开发中常用的输出调试技巧:
先在左侧的
Package Explorer,右键->New->Java Projects,
命名为
Debug,其他参数默认

点击 Finish,在 src 上,右键->New->Package,命名为 control
〔编程时最好将每一个类都创建一个包,即便是很简单的包名,这是一个好习惯〕


点击 Finish,自动生成了一个 package-info.java,可以删掉


在 control 上,右键->New->class,命名为 DebugTest,
勾选上 public static void main(String[] args),自动创建
一个主方法,点击
Finish 完成

最常用的输出
System.out.println();
可以使用快捷键 syso,输入 syso,回车即可
〔会出提示〕

这个输出函数支持的类型非常多,如:字符串、数字、布尔…甚至是很多看起来
不可思议的对象类型
|
package control; import javax.swing.JFrame; public class DebugTest { public static System.out.println(123456); System.out.println(true); System.out.println("this is string debug info");
//输出一个窗体 //即 //这里所有的对象都是调用它的 toString() 方法 //输出:JFrame() 的默认的 toString() 方法 System.out.println(new JFrame()); } } |
Eclipse中:

println() 也可以接收传入值为 Object 的任何类型

运行一览:

如果将
JFrame() 复写一下,复写其 toString() 方法:
|
package control; import javax.swing.JFrame; public class DebugTest { public static System.out.println(123456); System.out.println(true); System.out.println("this is string debug info");
//输出一个窗体 //即 //这里所有的对象都是调用它的 toString() 方法 //输出:JFrame() 的默认的 toString() 方法 System.out.println(new JFrame(){ @Override public String toString() {
return } }); } } |
Eclipse中:

运行一览:输出自定义
toString() 方法给出的返回值

在实际应用中,需要使用不同颜色对输出信息进行区分
|
黑色:System.out.println(); |
『快捷键:syso』 |
|
红色:System.err.println(); |
『快捷键:syse / syser / syserr』 |
〔err 即 错误,一般用于输出错误信息〕

再如:
|
package control; public class DebugTest { public static int[] ints=new //for循环 for (int i = 0; i < ints.length; i++) { ints[i]=i+1; //输出 i+1 System.out.println(i+1); } } } |
Eclipse中:

运行一览:

如果程序中出现错误,如:上面的循环次数是根据
ints.length 来判断,
如果强制改为 6,数组在访问时就会抛出数组越界异常,使用
Try/catch
Block 包裹整个 for循环
〔选中整个
for循环,右键->Surround With->Try/catch Block〕

代码:
|
package control; public class DebugTest { public static int[] ints=new
try { //for循环 for (int i = 0; i < 6; i++) { ints[i]=i+1; //输出 i+1 System.out.println(i+1); } } catch (Exception e) { //e.printStackTrace();
//已知错误为 System.err.println("数组越界!"); } } } |
运行一览:
(注意:这里应用了配色方案,所以颜色不是纯正的黑色和红色,
但也能区分出不同)

调试非常重要的一个技巧就是
下断点
如:需要让程序每次输出
i+1 前都暂停,可以在 System.out.println(i+1);
对应的行号上,双击(取消断点,再在对应行号上双击即可)

接下来运行时就是调试,而不是直接运行了,点击
调试
按钮
进入
调试模式,点击
Yes 即可
〔调试
Debug 快捷键:F11,运行 Run 快捷键:Ctrl+F11〕
(Debug 按钮 的右边是 Run)


进入调试模式:每次暂停后,都点击
Resume 按钮继续运行,或使用快捷键 F8


调试完毕,点击右上角的
Java 按钮,切换回 Java工作空间
(Java 按钮 的右边是 Debug)

如果取消掉
catch 中 e.printStackTrace(); 前面的注释:
〔其实这是默认生成的一行代码,即
在控制台(或命令行)中打印出所有的错误追踪信息〕
|
package control; public class DebugTest { public static int[] ints=new
try { //for循环 for (int i = 0; i < 6; i++) { ints[i]=i+1; //输出 i+1 System.out.println(i+1); } } catch (Exception e) { //默认生成的一行代码 //可以在控制台(或命令行)打印出所有的错误追踪信息 e.printStackTrace();
//已知错误为 System.err.println("数组越界!"); } } } |
运行一览:
输出信息为
ArrayIndexOutOfBoundsException,即数组越界异常
最大值是 5,错误行数:14

所以
Try/catch Block 中,自动生成的 e.printStackTrace(); 可以在程序出错时
打印错误追踪列表,据此,就能追踪到最终错误的来源和错误的类型
【made by siwuxie095】
Java常用的输出调试技巧的更多相关文章
- Java Spring Boot 一些调试技巧
配置文件的管理 有的时候我们希望开发环境和测试环境的配置文件放在一起可以快速切换 spring boot 为我们提供了很方便的的选项 在 application.properties 中只需要添加属性 ...
- 输出调试技巧 PRINTF()
#define PRINTF(...) \ do { \ printf( "%d:%s::",__LINE__, __FUNCTION__);\ printf(__VA_ARGS_ ...
- CSS 常用的兼容性调试技巧
1.实现所有浏览器主页居中 Firefox下主页居中代码:.box{margin:0px auto} IE5.5下主页居中代码:body{text-align:center;} 将以上两种代码,合在一 ...
- iOS开发之Xcode常用调试技巧总结
转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...
- GDB调试技巧:总结篇
目录 一 写在开头 1.1 本文内容 二 学习资料 三 常用命令 四 调试技巧 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 写在开头 1.1 本文内容 总结GDB调试的一些常用命令和调试 ...
- java与.net比较学习系列(1) 开发环境和常用调试技巧
最近因为公司项目要由.net平台转到java平台的原因,之前一直用.net的我不得不开始学习java了,刚开始听到说要转java的时候很抗拒,因为我想专注在.net平台上,不过这样也并不完全是坏事,通 ...
- Java常用调试技巧(转)
调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...
- java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧
11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2) ...
- Xcode 常用调试技巧总结
NSLog,po命令和普通断点调试相信每个iOS开发者都会,这里就不作介绍了. 一.Memory Graph Xcode8新增:Memory Graph解决闭包引用循环问题 有很多叹号说明就有问题了. ...
随机推荐
- Alpha冲刺(11/10)
拖鞋旅游队团队事后诸葛亮会议 前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10054510.html 时间:2018-12-1 20:00 地 ...
- haskell 常用 函数
在学习haskell 记录以下常用的函数 随时更新! span span :: (a -> Bool) -> [a] -> ([a], [a]) span, applied to ...
- Django——ContentType(与多个表建立外键关系)及ContentType-signals的使用
一.ContentType 在django中,有一个记录了项目中所有model元数据的表,就是ContentType,表中一条记录对应着一个存在的model,所以可以通过一个ContentType表的 ...
- BZOJ4372: 烁烁的游戏【动态点分治】
Description 背景:烁烁很喜欢爬树,这吓坏了树上的皮皮鼠. 题意: 给定一颗n个节点的树,边权均为1,初始树上没有皮皮鼠. 烁烁他每次会跳到一个节点u,把周围与他距离不超过d的节点各吸引出w ...
- Codeforces 1009C: Annoying Present
C. Annoying Present time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 常用SQL语句积累
--批量设置表中某字段为固定值 update dbo.LampList set LampGroupAddress=ISNULL(LampGroupAddress,'')+1 --批量设置表中某字段为N ...
- Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录
此为在网络上找来的,觉得很好! 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令来切割日志 ps -def | grep ...
- streamsets 数据流设计
streamsets 支持branch(分支)&& merge(合并)模式的数据流 branch 数据流 如下图: 我们可以根据数据包含的字段进行拆分,不同的数据流处理自己关注的数据 ...
- ballerina 学习二十五 项目docker 部署&& 运行
ballerina 官方提供了docker 的runtime,还是比较方便的 基本项目创建 使用cli创建项目 按照提示操作就行 ballerina init -i 项目结构 添加了dockerfil ...
- 【C++11】新特性 之 auto的使用
C++11中引入的auto主要有两种用途:自己主动类型判断和返回值占位.auto在C++98中的标识暂时变量的语义,因为使用极少且多余.在C++11中已被删除.前后两个标准的auto,全然是两个概 ...