IDEA使用技巧

日常使用

  1. 快速输入public static void main(String[] args){}

    psvm + tab即可

  2. 快速输入System.out.println();

  • sout + tab即可
  • 可以先输入任何想要输出的变量,再.sout
  1. 创建对象或使用一个能返回对象的方法时,直接写new ClassName()/ClassName.methodName(parameters),再Alt + Enter,即可自动产生对象名。

  2. 谷歌IDEA优化,进行相关操作

  3. 运行Java文件

  • 上次运行过的文件:Shift + F10
  • 当前文件:Ctrl + Shift + F10
  1. 反编译

    1. 工具栏 - Project Structure… - Project - Project compiler output,找到编译成字节码的class文件输出地址,在文件资源管理器中打开该地址;
    2. IDEA中,在中意的Package右键 - Show in Explore
    3. 在文件资源管理器中,复制class文件到java文件所在的目录,之后再在IDEA中打开,即可查看反编译后的内容
  2. 编写构造器

    Alt + insert –> Constructor

  3. 编写Getter和Setter方法

    Alt + insert –> Getter and Setter

  4. 方法的重载

    Alt + insert –> Override Methods…

    1
    2
    3
    4
    5
    // 创建重载方法后,IDEA 会自动写一个注解(有功能的注释)
    @Override
    public void overrideMethod() {
    // 方法体
    }
  5. 包裹选中的代码

    Ctrl + Alt + T

  6. 自动清除无效import

    Settings -> Editor -> General -> Auto Import -> Java

    勾选Optimize imports on the fly

    image-20220818002554092

  7. 在底部的Git标签页中,添加Local Changes标签页

    效果:

    image-20221214231836532

    操作:File - Settings - Version Control - Commit - 取消勾选Use non-modal commit interfce

    image-20221214231903047
  8. 去掉import自动合并

IDEA java文件import去掉自动合并

  1. idea+tomcat实现热部署-修改java代码及时生效

  2. Endpoints:查看web应用程序的请求映射

    view - Tool Windows - Endpoints

    image-20240729143156072 image-20240729143247150

日志

设置快捷生成日志的提示:

  1. File - Settings - Editor - Live Templates - 加号 - Live Template

image-20230917005706530

  1. Abbreviation填写期望的快捷缩写,Template text填写期望的填充效果

    private static final Logger LOGGER = LoggerFactory.getLogger($CLASS_NAME$.class);

  2. Edit Variables… - Expression选择className()

  3. 左下角Define,设置生效的场景:java: declaration

    image-20230917012446212

文件和代码模板

创建类时自动添加注释

  • File - Settings - Editor - File and Code Tmplates
  • Scheme: Default
  • Includes - File Header
image-20231009100131089

Debug

断点

IDEA中有4种基础断点:

  1. 行断点
  2. 方法断点
  3. 属性断点
  4. 异常断点

以此4种断点为基础,衍生出了4种断点:

  1. 条件断点。右键断点,添加Condition。只有在满足条件时,断点才会阻断程序运行。

    image-20240717110843181
  2. 源断点。可以在不阻断代码的情况下,在控制台上输出某些信息。

    Shift+鼠标左键 添加断点,勾选"Breakpoint hit" messageEvaluate and log

    • "Breakpoint hit" message:在调试控制台中输出断点被出发的消息。默认消息为 “Breakpoint hit at <文件名>:<行号>”。
    • Evaluate and log:执行输入框中输入的表达式,并将结果输出到控制台。

    image-20240717114900903

  3. 多线程断点。模拟线程的轮询执行。

    右键断点,Suspend选择Thread。实际debug过程中,可以在Debugger的标签页看到不同的线程,通过切换线程进行Debug,就能模拟线程的轮询执行。

    image-20240717142624986
  4. Stream断点。在Stream的代码行加上断点,就可以在运行到这行代码时,点击Trace Current Stream Chain,看到数据的流转情况。

    image-20240717142837288


进入断点之后的调试技巧

  1. Step Over:一行行往下执行,不会进入方法内部

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

    Step Into Force Step Into
  3. Step Out:跳转到调用方法处。

  4. Run to Cursor:跳转到鼠标光标所在位置。

    image-20240717144632995

回退重新执行方法 Reset Frame

在调用栈中,点击希望回退的位置对应方法左侧的回退图标Reset Frame,就能实现回退。

image-20240717144332410


跳转至下一个断点 Resume Program

如果没有后续断点,就会将程序执行至结束。

image-20240717144557317

观察指定变量的变化情况 Watches

Debug过程中,所有的变量都会被展示在Debugger栏中,如果只想要观察某几个特定的变量,不便于观察

勾选Debug标签页右侧Layout Settings下的Separate Watches选项。再添加一个想要监听的变量或表达式,就能只关注自己关心的变量信息。

image-20240717145055989

手动修改变量的值

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

image-20240717145755575

手动抛出异常,测试异常处理的代码逻辑

选择栈中方法后,右键选择Throw Exception

image-20240717150036571

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

image-20240717150152071

监控断点的开销

有时候打了断点会让项目执行很慢,尤其是一些复杂的条件断点。勾选Overhead,就能看到断点的执行次数和执行耗时。

如果发现断点耗时,可以去掉,节约资源。

image-20240717150846260

添加JVM启动参数

Edit Configurations... Modify options Add VM options

添加JVM启动参数

  • -Xms:堆内存最小值,例如-Xms1m

  • -Xmx:堆内存最大值,例如-Xmx1m

  • -Xss:指定线程栈的大小

    通常不需要修改值,如果遇到栈溢出报错,可以适当增大;如果需要创建大量线程,可以适当减小。

  • -XX:+HeapDumpOnOutOfMemoryError:发生OOM后,生成相应的dump文件

  • -XX:HeapDumpPath=[指定的存放路径]:dump文件存放路径

  • -Xlog:gc*:查看GC日志

  • -XX:MaxTenuringThreshold:设置对象从Survivor区晋升到老年代的年龄阈值