整理了这篇文章,开发效率提升了30%。
psvm+Tab键:快速输出main方法
效果
public static void main(String[] args) {
}
sout+Tab键:快速输出System.out.println();
对象.sout+Tab键
"狗哥".sout + Tab键 -> System.out.println("狗哥");
任意对象.var+Tab键:快速声明对象
"".var+Tab键 -> String s = "";
new Object().var+Tab键 -> Object o = new Object();
任意布尔表达式.if+Tab键:快速输出if块
object1.equals(object2).if+Tab键
效果
if (object1.equals(object2)) {
}
任意布尔表达式.while+Tab键:快速输出while块
object1.equals(object2).while+Tab键
效果
while (object1.equals(object2)) {
}
fori+Tab键:快速输出for代码块
for (int i = 0; i < ; i++) {
}
Ctrl+Alter+T:代码包裹,很牛逼的功能
比如我们相对一段代码执行下面操作:
-
使用 if 包裹
-
使用 if / else 包裹
-
使用 while 包裹
-
使用 do / while
-
使用 try / catch
-
使用 try / finally包裹
-
使用 try / catch / finally包裹
-
使用 synchronized 包裹
-
使用 {} 包裹
等等,都可以使用Ctrl+Alter+T
来快速生成,选中需要包裹的代码,然后按上面的快捷键,如选中下面代码
String name = "程序员狗哥";
按Ctrl+Alter+T
,选择窗口中的try / catch / finally
,最后效果
try {
String name = "程序员狗哥";
} catch (Exception e) {
e.printStackTrace();
} finally {
}
Ctrl+w:选择代码块,w可以按多次,可以连续选择
Ctrl+Shift+w:Ctrl+w反向操作
Ctrl+O:快速在当前类中生成需要重写父类的方法
比如想在当前类中重写父类中的一些方法,可以按这个快捷键,然后会列出所有可以重写的方法,然后选中一个,此时会快速在当前类中生成重写的代码
Ctrl+I:快速当前类中生成需要实现的接口中的方法
可以快速在实现类中生成接口中需要实现的方法。
Alter+Insert:用于快速生成一些代码
-
快速生成构造方法
-
快速生成get、set方法
-
快速生成toString方法
-
快速重新方法
javabean中比较常用,用来快速生成get、set方法。
Ctrl+Alter+L:快速格式化代码
当前文件中使用这个快捷键,会格式化当前类中所有代码;也可以选中一部分代码进行格式化。
Ctrl+Alter+O:优化当前类中导入的包
比如当前有一些无用的import,这个快捷键会将这些无用的清理掉
Ctrl+/:使用//注释代码
Ctrl+Shift+/:使用/**/注释代码
Ctrl+Shift+向下箭头:快速将一个代码块下移
比如像调整类中方法的顺序,选中方法名,然后使用这个快捷键,将方法整体下移。
Ctrl+Shift+向上箭头:快速将一个代码块上移
Alter+Shift+向上箭头:快速上移一行代码
Alter+Shift+向下箭头:快速下移一行代码
Ctrl+Shift+C:快速复制文件路径
选择下面这个类
com.alibaba.fastjson.JSON
按Ctrl+Shift+C
效果:
C:\maven\.m2\repository3.3.9_0\com\alibaba\fastjson\1.2.29\fastjson-1.2.29.jar!\com\alibaba\fastjson\JSON.class
Ctrl+Shift+Alt+C:快速复制引用
快速获取引用,如
在JSON类上按Ctrl+Shift+Alter+C,可以将类的全名com.alibaba.fastjson.JSON复制到剪切板
快速复制方法引用,如:
在JSON的parse方法上使用这个快捷键可以将下面信息复制到剪切板:
com.alibaba.fastjson.JSON#parse(java.lang.String, int)
Alter+Shift+Insert:列选择模式,同时编辑多行内容
比如我有个文件,内容如下:
分享各种好用的软件
分享各种使用的技巧
分享各种好用的开源项目
此时我想在每行前面加上程序员狗哥
可以按Alter+Shift+Insert
进入多行编辑模式,然后点击鼠标左键拖拽鼠标,此时每行会加入光标,然后进行编辑。
再次按Alter+Shift+Insert
可以退出当前模式。
Ctrl+Shift+J:将多行代码缩为一行
选中下面代码,使用Ctrl+Shift+J
String name = "狗哥";
int age = 30;
String address = "北京市";
效果如下,变为一行代码了
String name = "狗哥"; int age = 30; String address = "北京市";
Ctrl+D:快速复制行
快速复制单行,将光标放在下面代码上,按Ctrl+D
String name = "狗哥";
效果
String name = "狗哥";
String name = "狗哥";
快速复制多行,选中下面代码,按Ctrl+D
String name = "狗哥";
int age = 30;
String address = "北京市";
效果
String name = "狗哥";
int age = 30;
String address = "北京市";
String name = "狗哥";
int age = 30;
String address = "北京市";
选中代码+Tab键:将选中的代码快速缩进
选中
String name = "狗哥";
int age = 30;
String address = "北京市";
按Tab键,效果
String name = "狗哥";
int age = 30;
String address = "北京市";
选中代码+Shift+Tab键:上面命令的反向操作
Ctrl+Shift+U:对代码切换大小写
选中下面代码
ABCDE
按Ctrl+Shift+U
abcde
再按Ctrl+Shift+U
ABCDE
Ctrl+Q:快速查看文档
快速查看类的文档,比如在Method类上,按Ctrl+Q,效果
快速查看方法文档,比如我想查看下面方法的文档信息
java.lang.reflect.Method.invoke
选中上面这个方面的名称,按Ctrl+Q,效果:
Ctrl+P:查看方法参数
下面是在forName0方法上,使用Ctrl+P产生的效果,可以看到这个参数的详细信息
Ctrl+Shift+P:快速查看一个表达式的类型
比如我想查看下面选中的这段代码,最后结果是什么类型的,对选中表达式按Ctrl+Shift+P
下面是效果,红框中显示了选中表达式的类型
Ctrl+E:查看最近访问的文件
按这个快捷键之后会弹出一个窗口,会列出最近访问的文件
多窗口查看文件
很牛逼的一个功能,看效果
下面的类上面点击鼠标右键,点击Split Vertically
效果,此时产生了2个窗口显示Class类
还可以继续开,下面来个垂直开多个窗口,点击下面的Split Horizontally
,如下
效果,3个窗口了
Ctrl+N:当前项目中快速查找某个类
Ctrl+N+N:当前项目及所有jar包中查找类
Ctrl+Shift+N:当前项目中快速查找某个文件
Ctrl+Shift+N+N:当前项目及其他所有文件中查找某个文件
Ctrl+G:输入行号,快速跳转到某一行代码
Ctrl+B:跳转到声明处
跳转到变量声明处
有时候方法比较长,我想看某个变量在什么地方定义的,直接选中变量,然后按Ctrl+B
,此时光标会跳到变量定义的地方。
如下,选中红框中的sb,然后按Ctrl+B
此时光标跳到下面这里了
跳转到类型的定义处
如
此时跳到StringBuilder中去了,如下:
跳转到方法定义处
如:
点击Ctrl+B
,跳到下面这里了
Ctrl+U:快速导航到某个类的父类或者接口
Ctrl+Alt+B:快速导航到实现中去(2种常见用法)
快速导航到某个类或者接口的实现类中
如下面这个接口
有一个实现类
可以在IOrderService这个接口中,按Ctrl+Alt+B快捷键,直接跳到其实现类OrderServiceImpl中去。
快速导航到方法的实现上
下面的方法中按Ctrl+Alt+B
此时会跳到实现类中对应的方法中去,如下:
Ctrl+Shift+B:快速跳到定义类型声明中去
下面的toGe
这个方法,返回值是String类型,在方法上使用Ctrl+Shift+B
组合键,会跳转到String类中去
效果
下面这个sb变量是StringBuffer类型,在sb变量上使用Ctrl+Shift+B
组合键,会跳转到StringBuffer类中去
效果
Ctrl+F12:查看文件结构(快速查看类的方法、成员变量)
快速定位到类中的方法,如查看String类中所有方法,String类中按Ctrl+F12
,如下
Ctrl+Alt+F12:快速打开文件在磁盘中的位置
比如在String类中使用Ctrl+Alt+F12
点击src.zip
Ctrl+H:显示一个类型的层次结构
String类上使用这个快捷键,效果
Alt+F7:查看某个类或者方法被哪些地方使用了
查看某个方法被哪些地方使用了,这个功能够比较常用,方法上面使用Alt+F7
,会列出当前方法被哪些地方调用了。
Shift+F6:快速重命名(对文件、类、变量快速重命名)
Ctrl+Alt+M:将一段代码抽取为方法
F6:快速将一个类移动到另外一个包中
快速将下面这个类移动到test2包中,选中这个类,按F6
下面输入需要移动的目标地址
移动完毕
F5:快速复制一个类
快速复制下面这个类,直接按F5,New Name中输入新的类名Demo2
下面产生了一个同样的类
Ctrl+Alt+Shift+T+7:将方法参数抽取到对象中
下面的insert方法,参数太多,此时想将这几个参数封装在UserDto对象中
public class UserService {
public void insert(String name, String age, String salary, String job){
}
}
选中方法,先使用Ctrl+Alt+Shift+T
组合键,然后按7
,弹出下面窗口,输入类名
方法的参数被抽取到下面的UserDto
中了
insert方法变成下面这样了
Ctrl+Alt+V:抽取变量
下面代码,狗哥
出现了4次,可以将其用一个变量来代替,选中任意一个狗哥
,使用Ctrl+Alt+V
public void m1(){
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
}
代码变成了下面这样
public void m1(){
String dog = "狗哥";
System.out.println(dog);
System.out.println(dog);
System.out.println(dog);
System.out.println(dog);
}
Ctrl+Alt+C:抽取常量
public void m1(){
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
}
上面代码使用Ctrl+Alt+C
组合键,变成下面这样,
public static final String DOG_NAME = "狗哥";
public void m1() {
System.out.println(DOG_NAME);
System.out.println(DOG_NAME);
System.out.println(DOG_NAME);
System.out.println(DOG_NAME);
}
Ctrl+Alt+C:抽取方法参数
public void m1(){
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
System.out.println("狗哥");
}
上面代码使用Ctrl+Alt+C
组合键,变成下面这样,狗哥
变为了方法的参数
public void m1(String dogName){
System.out.println(dogName);
System.out.println(dogName);
System.out.println(dogName);
System.out.println(dogName);
}
Ctrl+Shift+T:快速给一个类生成单元测试
Ctrl+Shift+F12:当前窗口最大化
Alt+F1:可以将正在编辑的元素在各个面板中定位
使用ctrl+鼠标滚轮更改字体大小(缩放)
配置如下
效果,下面代码字体比较小,使用ctrl+鼠标滚轮
试试效果
效果如下,随着滚轮的运动,字体变大/变小:
开启代码自动提示
配置如下
比如我输入hash
,会出现下面效果,弹出一堆提示
显示行号
调试相关功能
添加断点:行号上面点击鼠标左键
点击下面的红圈
效果
F7:进入方法
调试的时候遇到方法体的时候会进入到方法体内部,每个方法依次执行
F8:一行行调试
调试的时候 遇到方法体不会进入方法内部 只会依次执行
F9:跳到下一个断点
调试的时候 只会执行 打断点的地方
Shift + F8:跳出当前方法
Alt + Shift + F7:强制进入方法
调试的过程中强制进入方法内部,这个和F7看起来有点相似,其实不一样的,F7只能进入当前项目中类的方法中,而当前这个更强大,可以进入任何方法内部。
条件断点
比如下面代码,只想在i为10的时候停下来
for (int i = 0; i < 50; i++) {
System.out.println(i);
}
鼠标左键在行数上加上断点,在断点上右键加上条件,点击Done按钮
此时断点上面会有个问号
Alt+F8:调试过程中表达式求值
禁用断点
比如系统中有很多断点,此时不想删除,但是又不像让断点阻碍当前程序的执行,可以点击下面的按钮,会让所有断点都变灰失效
批量去掉断点
点击下面的按钮
弹出断点视图,可以对断点增删操作