常用缩写
main
函数
// 输入main
public static void main(String[] args){
}
sout
打印函数
// 输入sout
System.out.println();
for循环简写fori
// 输入fori
for (int i = 0; i < ; i++) {
}
// 在fori中嵌套输入fori会自动按照ijklm的顺序生成下去
for (int i = 0; i < ; i++) {
for (int j = 0; j < ; j++) {
}
}
n.for
循环n次
// 输入5.for
for (int i = 0; i < 5; i++) {
}
遍历数组中的元素array.for
int[] array = new int[10];
// 输入array.for
for (int i : array) {
}
代码后加.
.sout
我们使用sout
缩写后得到的打印的函数虽然非常方便,但是还是不够方便,因为需要将内容输入后还要将光标移到行的末尾才能换行
一种更好的方法打印的方式是content.sout
方式,它会直接生成整一行代码而且光标在最后,写后面内容时直接换行即可,非常方便。
但这种方式在对变量打印时很方便,对想打印出想要自定义变量+字符串形式的内容也没有方便很多。
public static void main(String[] args) {
int num = 1;
// num.sout后智能生成
System.out.println(num);
}
new 对象.var (new对象并赋值给变量的快捷实现)
下面会将一种alt+enter的自动补全new对象并赋值给变量的实现方式,但是这里的.var更常用也更推荐(因为清晰,而且不用按组合键)
比如我们想要new一个长度为10的数组并复制给变量名为array的变量
我们可以直接按照new 对象.var
的形式:new int[10].var
之后光标会自动停留在变量名的位置,我们可以直接修改成自己想要的变量名
改成array之后直接按enter
,光标就会调到最后的末尾
这样的好处一是不用写赋值语句的左半边,而且不会因为左右的类的类型不匹配而报错
快捷键
alt+enter
智能提示纠正错误(补全)
只要碰到有红色的波浪线,都可以按alt+enter
进行智能补全
常用的时候包括:
new对象时
new一个对象时直接输入new name; 然后alt+enter
智能补全
BaseUseImpt impt = new BaseUseImpt();
其自动会将 new 类名()
进行补全 类名 + 变量名 = new 类名();
自动实现接口的重写
此时由于两个接口中定义的public abstract的抽象函数都没有实现,所以红色波浪线报错
用alt+enter
智能补全抽象函数的重写
这样就顺利的补全完整了,非常方便
总结:遇事不决,遇到波浪线,直接alt+enter智能提示一波
alt+insert
类中插入构造函数
构造函数是和类同名的method
在定义类的构造函数时(等同于py中的__init__()
)使用alt+insert
可以智能添加构造函数,按回车确认添加构造函数
无参构造(点击无选择)
注意如果没有定义任何构造函数那么java会自动生成一个空的构造函数
public class Student {
String name;
int id;
public Student() {
}
}
有参构造
按住shift
上下移动全选所有之前类定义的属性可以直接智能有参构造
public class Student {
String name;
int id;
public Student() {
}
public Student(String name, int id) {
this.name = name; // this等于py中的self
this.id = id;
}
注意:
如果定义了有参构造,那么java并不会自动生成一个空的构造函数,这时直接用无参new一个对象时就会报错。
所以如果想要保留无参和有参构造两种情况。那么必须同时显示定义无参构造。
类中插入set()和get()(对于私有属性)
在对类进行封装时,我们都会将类的属性私有化private
,那么这样在外部创建类后就无法
- 通过
class.属性
的方式访问类的属性 - 通过
class.属性=value
的方式更改类的属性
作为替代的,我们会定义public
的两个set()和get()方法来对外提供接口访问以及更改类的属性
使用alt+insert
选择Getter()
或Setter()
或Getter和Setter()
智能插入set()和get()方法
然后使用shift
选择需要对外提供方法的属性就会自动生成set()和get()方法
public class Student {
private String name;
private int id;
public Student() {
}
public Student(String name, int id) {
this.name = name;
this.id = id;
}
// 使用`alt+insert`选择`Getter()`或`Setter()`或`Getter和Setter()`智能插入set()和get()方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
子类重写父类方法@Override
继承父类后使用alt+insert
选择重写方法可以对父类的方法进行重定义
此时选择要重写方法
接着就会自动生成重写方法的模板
public class UniStudent extends Student{
// 使用`alt+insert`选择**重写方法**选定指定方法进行智能重写
@Override
public void identify() {
super.identify(); //默认会加上执行父类方法这一句,如果不需要可删除
}
}
ctrl + alt + t
自动套用模板(template)
当我们想对一句命令加上条件判断时,可以直接用ctrl + alt + t
指令
它支持的模板有:
- 条件判断if,if else
- 循环 while/for
- 异常处理 try、catch、finally
示例一:
自动生成条件判断if else
System.out.println("AutoImplement"); //用`ctrl + alt + t`指令选择if/else后
//自动生成的if/else判断模板
if () {
System.out.println("AutoImplement");
} else {
}
示例二:
自动生成try/catch模板捕捉异常
System.out.println(a/b); // /用`ctrl + alt + t`指令选择try/catch后
//自动生成的try/catch异常捕捉模板
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace(); //代表打印出错误
}
连续按两下shift
连续按两下shift是可以进行搜索,包括类和文件等
Ctrl + p
提示要填的参数信息
Ctrl + p
(p是parameters的缩写)
当不知道或忘记参数列表时,可以按Ctrl + p
进行智能提示,非常方便。
Ctrl + Alt + F
将局部变量变为实例变量
Ctrl + Alt + F
,F是fileds的缩写,即表示变换作用域。
当在方法体中想将一个局部变量变成类中的实例变量时,按下Ctrl + Alt + F
就会在类的开头添加上实例变量定义语句。
比如说我们想把下面方法体内的局部变量text快速变为一个类的实例变量,按下Ctrl + Alt + F
后就会出现以下选项,我么可以选择修改text的内容,也可以不修改。
然后敲击回车后
发现idea会自动将其添加为实例变量,并将前面的类名Text删除
这是非常简洁智能的
Ctrl + H
查看类结构
有时候我们想看一个类的树结构(比如它的子类以及父类)
我们就可以选中想看的类,按下Ctrl + H
指令,H代表hierarchical 层次的意思。
比如以下InputSplit
是个抽象类,其无法直接实例化。此时我们就可以查看它的子类是否有可用的类。
打开后发现其所有子类都是可以使用的,而自身是个抽象类所以在右侧的层次结构中被标为星号。
注释快捷键
单行注释的快捷键是 ctrl + /
块注释的快捷键是选中内容后ctrl + shift + /
想完整打块注释是只需打/*
回车后输入想要写的内容即可,后面的 */
会进行自动补全
光标移动到行尾/行末
idea自带的快捷键alt + 左
和alt + 右
是左右切换文件,我觉得没有什么必要,用鼠标点切换文件更好。
所以我将光标移到行首换成了alt + 左
光标移到行末换成了alt + 右
行操作
行操作配置的和我vscode一样
删除一整行的快捷键是ctrl + K
复制行ctrl + D
向上移动行 alt + up
向下移动行 alt + down
向上或向下选中多行shift + up/down