IDEA使用技巧
日常使用
快速输入
public static void main(String[] args){}
psvm
+ tab即可快速输入
System.out.println();
sout
+ tab即可- 可以先输入任何想要输出的变量,再
.sout
想创建对象或使用一个能返回对象的方法时,直接写
new ClassName()
/ClassName.methodName(parameters)
,再Alt + Enter
,即可自动产生对象名。谷歌
IDEA优化
,进行相关操作运行Java文件
- 上次运行过的文件:Shift + F10
- 当前文件:Ctrl + Shift + F10
反编译
- 工具栏 - Project Structure… - Project - Project compiler output,找到编译成字节码的class文件输出地址,在文件资源管理器中打开该地址;
- IDEA中,在中意的Package右键 - Show in Explore
- 在文件资源管理器中,复制class文件到java文件所在的目录,之后再在IDEA中打开,即可查看反编译后的内容。
编写构造器
Alt + insert –> Constructor
编写Getter和Setter方法
Alt + insert –> Getter and Setter
方法的重载
Alt + insert –> Override Methods…
// 创建重载方法后,IDEA 会自动写一个注解(有功能的注释) @Override public void overrideMethod() { // 方法体 }
包裹选中的代码
Ctrl + Alt + T
自动清除无效import
Settings -> Editor -> General -> Auto Import -> Java
勾选
Optimize imports on the fly
。在底部的Git标签页中,添加Local Changes标签页
效果:
操作:File - Settings - Version Control - Commit - 取消勾选Use non-modal commit interfce
去掉import自动合并
Endpoints
:查看web应用程序的请求映射view
-Tool Windows
-Endpoints
日志
设置快捷生成日志的提示:
- File - Settings - Editor - Live Templates - 加号 - Live Template
Abbreviation填写期望的快捷缩写,Template text填写期望的填充效果
private static final Logger LOGGER = LoggerFactory.getLogger($CLASS_NAME$.class);
Edit Variables… - Expression选择
className()
左下角
Define
,设置生效的场景:java: declaration
文件和代码模板
创建类时自动添加注释
- File - Settings - Editor - File and Code Tmplates
- Scheme:
Default
- Includes - File Header

Debug
断点
IDEA中有4种基础断点:
- 行断点
- 方法断点
- 属性断点
- 异常断点
以此4种断点为基础,衍生出了4种断点:
- **条件断点。**右键断点,添加Condition。只有在满足条件时,断点才会阻断程序运行。

- 源断点。可以在不阻断代码的情况下,在控制台上输出某些信息。
Shift
+鼠标左键 添加断点,勾选"Breakpoint hit" message
和Evaluate and log
"Breakpoint hit" message
:在调试控制台中输出断点被触发的消息。默认消息为 “Breakpoint hit at <文件名>:<行号>”。Evaluate and log
:执行输入框中输入的表达式,并将结果输出到控制台。
- 多线程断点。模拟线程的轮询执行。
右键断点,Suspend选择Thread
。实际debug过程中,可以在Debugger
的标签页看到不同的线程,通过切换线程进行Debug,就能模拟线程的轮询执行。

- **Stream断点。**在Stream的代码行加上断点,就可以在运行到这行代码时,点击
Trace Current Stream Chain
,看到数据的流转情况。
进入断点之后的调试技巧
Step Over
:一行行往下执行,不会进入方法内部。

Step Into
:进入方法内部。但是一些外部Jar包的方法会无法进入。如果想要进入外部Jar包方法,可以使用Force Step Into


Step Out
:跳转到调用方法处。Run to Cursor
:跳转到鼠标光标所在位置。

回退重新执行方法 Reset Frame
在调用栈中,点击希望回退的位置对应方法左侧的回退图标Reset Frame
,就能实现回退。
跳转至下一个断点 Resume Program
如果没有后续断点,就会将程序执行至结束。

观察指定变量的变化情况 Watches
Debug过程中,所有的变量都会被展示在Debugger栏中,如果只想要观察某几个特定的变量,不便于观察。
勾选Debug标签页右侧Layout Settings
下的Separate Watches
选项。再添加一个想要监听的变量或表达式,就能只关注自己关心的变量信息。

手动修改变量的值
通过Evaluate Expression...
,就可以实现手动修改变量值,以快速进入某个代码逻辑中。

手动抛出异常,测试异常处理的代码逻辑
选择栈中方法后,右键选择Throw Exception
:

例如构造一个空指针异常:

监控断点的开销
有时候打了断点会让项目执行很慢,尤其是一些复杂的条件断点。勾选Overhead
,就能看到断点的执行次数和执行耗时。
如果发现断点耗时,可以去掉,节约资源。

添加JVM启动参数



-Xms
:堆内存最小值,例如-Xms1m
-Xmx
:堆内存最大值,例如-Xmx1m
-Xss
:指定线程栈的大小通常不需要修改值,如果遇到栈溢出报错,可以适当增大;如果需要创建大量线程,可以适当减小。
-XX:+HeapDumpOnOutOfMemoryError
:发生OOM后,生成相应的dump文件-XX:HeapDumpPath=[指定的存放路径]
:dump文件存放路径-Xlog:gc*
:查看GC日志-XX:MaxTenuringThreshold
:设置对象从Survivor区晋升到老年代的年龄阈值