文章目录
声明:以下所讲皆是在 Idea 2019版本上操作的,且 Key Map 最好选择 Default 模式。
1、配置 sys 输出快捷键
首先点击工具栏 File->Settings,搜索 Live…
新建一个分组,然后在该分组下添加快捷键。
因为已经配置了 sys 快捷键,这里配置 try 快捷键,过程一样。
此时, 在下面有一条红色警告语, 点击最下面的”Define”, 选择 Java。
点击 Apply ,然后点击 OK 退出。在 Java 文件中输入 sys 即可带出 System.out.println();
2、try/catch 快捷键
选中想被 try/catch 包围的语句,同时按下 ctrl+alt+t 快捷键,如下图:
这里也可以便捷地带出别的嵌套语句。
3、移动到行头行尾快捷键
首先点击工具栏 File->Settings,找到 Keymap 列表。
在 Keymap 中搜索 line。
其中 Move Caret to Line End
表示将光标移动到行尾,Move Caret to Line Start
表示将光标移动到行头,自带的快捷键是 Home 和 End 快捷键,但是由于使用起来不方便,所以根据自己习惯,将 Alt+.
设置为移动到行尾的快捷键,Alt+逗号
设置为移动到行头的快捷键。
选中要添加快捷键的行,右键选择 Add Keyboard Shortcut
,然后同时点击 Alt+.,点击 OK 就可以了。
不管是在 Idea 编辑器,还是 Pycharm 编辑器,编写代码为了更加快速,这两个快捷键使用的频率相应来说也就很高。
4、给 main 方法附带参数
点击 Run 下的 Edit Configurations
配置 Configuration 页中的 Program arguments 选项,就可以在 idea 中传入参数,参数之间用空格隔开。
最后重新运行 Java 程序即可。
5、编译
编程语言
在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming
Language)分为低级语言(Low-level Language)和高级语言(High-level Language)。
机器语言(Machine Language)和汇编语言(Assembly Language)属于低级语言,直接用计算机指令编写程序。
而C、C++、Java、Python等属于高级语言,用语句(Statement)编写程序,语句是计算机指令的抽象表示。
编译
上面提到语言有两种,一种低级语言,一种高级语言。简单的理解:低级语言是计算机认识的语言、高级语言是程序员认识的语言。
那么如何从高级语言转换成低级语言呢?这个过程其实就是编译
。将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序的过程就是编译。负责这一过程的处理的工具叫做
编译器
现在我们知道了什么是编译,也知道了什么是编译器。不同的语言都有自己的编译器,Java 语言中负责编译的编译器是一个命令:
javac
当我们写完一个 HelloWorld.java 文件后,我们可以使用 javac
HelloWorld.java 命令来生成 HelloWorld.class 文件,这个 class 类型的文件是JVM可以识别的文件。通常我们认为这个过程叫做 Java 语言的编译。其实,class 文件仍然不是机器能够识别的语言,因为机器只能识别机器语言,还需要 JVM 再将这种 class文件类型字节码转换成机器可以识别的机器语言。javac是收录于JDK中的Java语言编译器。该工具可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码。
在 Idea 工具上实现源码的编译
6、反编译手段
反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。
有了反编译工具,我们可以做很多事情,最主要的功能就是有了反编译工具,我们就能读得懂Java编译器生成的字节码。比如我们就可以洞悉Java语法糖背后的原理。
1、javap
javap 是 jdk 自带的一个工具,可以对代码反编译,也可以查看 java 编译器生成的字节码。javap 和其他两个反编译工具最大的区别是它生成的文件并不是 java 文件,也不像其他两个工具生成代码那样更容易理解。用以下源码进行讲解:
public class ConstantStr {
public static void main(String[] args) {
char c = 'a';
int cn = (int)c;
int ch = c & 0xffff;
}
}
按照上述介绍的那样对该源码进行编译,然后在输入 javap -c ConstantStr
命令进行反编译。
最终得到如下结果:
public class stringLearn.ConstantStr {
public stringLearn.ConstantStr();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 97
2: istore_1
3: iload_1
4: istore_2
5: iload_1
6: ldc #2 // int 65535
8: iand
9: istore_3
10: return
}
javap 并没有将字节码反编译成 java 文件,而是用另一种形式的字节码显示,其中包含的有 JVM 指令符号。这种反编译形式得到的结果虽然不像 Java 文件那样,但是内容却是最完整的,所以有必要了解一下必要的指令的意义。在查看编译时期 Class 文件常量池中字面量的时候,就需要通过该结果进行查看。
2、Jad
首先点击工具栏 File->Settings,找到 Plugins 列表。
点击安装 IdeaJad,然后重启 Idea,打开 .class 文件,会提示是否需要反编译,点击 yes,然后就提示报错,报错信息如下:
网上一番查询,得知这是以往的旧版本,已经不更新了,所以放弃使用该插件。
至于 IntelliJad9 和 IntelliJad 安装后重启都会报错,最后也就不了了之,放弃使用该插件。
3、Java Decompiler
同样搜索关键词 Java Decompiler,点击 Install,重启 Idea,然后在 Idea中打开 .class 文件,结果如下:
// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
package stringLearn;
public class ConstantStr {
public ConstantStr() { /* compiled code */ }
public static void main(java.lang.String[] strings) { /* compiled code */ }
}
对比不安装此插件打开.class 文件的结果:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package stringLearn;
public class ConstantStr {
public ConstantStr() {
}
public static void main(String[] var0) {
byte var1 = 97;
int var3 = var1 & '\uffff';
}
}
???对于此结果深感疑惑,能查看什么内容,故放弃使用该插件。
4、JD-GUI
JD-GUI 是显示 java 源代码 *.class 文件的 图形界面工具。可以在这里下载:JD-GUI-DownLoad
下载下来后,打开该工具,直接将 jar包或 class 文件拖拽到 显示窗口即可查看源代码。
综上,使用 javap 命令,或直接在 Idea 中打开,又或者 JD-GUI 工具打开.class 文件,来查看反编译的信息,虽然彼此结果有所出入,以 javap 命令执行后的结果为准。
7、查看最近修改的代码
ctrl + E
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdCKZa0H-1573177960361)(F:\桌面移植\csdn博客\32\v2-9d6bea9d77991ad7036c09c0e05fb72d_b.jpg)]
8、 查看当前类的子类
ctrl + h
9、 显示类之间的关系
ctrl + alt + u
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CLUkPrvZ-1573177960362)(F:\桌面移植\csdn博客\32\微信截图_20191107094559.png)]
10、 生成代码(如GET,SET方法,构造函数等)
ALT+INSERT
11、查看方法被哪里调用
ctrl + b
12、创建 Java 类时,自动在文件头添加作者和创建时间
再次新建类文件,效果如下:
13、方法注释
同配置 sys 输出快捷键类似,具体操作如下图所示:
注: 当注释放在函数的外面时,自动获取的参数都为空。
如果平时需要在方法外进行注释,可以输入 /** + 回车
即可。
14、查找
当前文件中查找
ctrl + f
当前项目中查找
ctrl + shift + f
15、替换
ctrl + shift + r
16、生成 Junit 测试类
如果是 maven 项目,可以在 pom.xml 文件中添加 Junit 依赖。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
如果是 Spring Boot 项目,spring-boot-starter-test
包中就包含了 Junit 依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
1、在要生成测试类的类里面,按ctrl+shift+t
–> create new test
2、将鼠标光标放到要生成测试类的类名或者方法名上面,按ctrl + enter
–> create test
点击创建 create test:弹出下面选择框
后期会不断记录新的操作过程讲解。
更多内容可以参考官方文档:IntelliJ IDEA官方文档