IntelliJ调试时使用Evaluate Log为何输出“void”?
为什么IntelliJ调试时会输出
void? 嘿,我之前在IntelliJ里调试Java代码时也碰到过一模一样的问题!让我给你拆解下为啥会出现这些void输出。
先理清楚你的代码逻辑:数组a初始全是1,for循环里的a[i]++是自增操作,它的返回值是自增前的数值(也就是每次都会返回1),这个操作本身不会产生任何输出。
你看到的void 1交替输出,根源就在你对断点的日志配置上——当你通过Ctrl+Shift+F8打开View Breakpoints窗口时,你大概率做了以下两件事之一:
情况1:在「Evaluate and log」区域添加了
System.out.println(a[i]++)表达式System.out.println()是一个返回void的方法,IntelliJ的调试日志会默认记录你输入的每个表达式的返回值,所以会输出void;同时这个方法本身会打印出a[i]++的返回值1,两者叠加就出现了void 1的输出。情况2:在「Evaluate and log」区域同时添加了两个表达式
比如一个是System.out.println(a[i])(返回值void),另一个是a[i]++(返回值1),每次断点触发时就会依次输出这两个表达式的返回值,也就是void 1。
怎么解决?
你只需要修改断点的配置:
- 按下
Ctrl+Shift+F8打开View Breakpoints窗口,找到对应的循环断点 - 去掉「Evaluate and log」区域里那些返回
void的方法调用(比如System.out.println相关的表达式) - 如果只是想查看
a[i]的值,直接在「Log」区域勾选「Breakpoint hit message」,然后在自定义消息里写{a[i]}就行——IntelliJ会自动帮你打印变量值,完全不需要手动调用System.out.println
内容的提问来源于stack exchange,提问作者Coder-Man
相关产品推荐
相关产品推荐

