代码样式。 Java
使用此页面配置 Java 文件的格式选项。 当您更改这些设置时, 预览 面板将显示这将如何影响您的代码。
制表符和缩进
条目 | 描述 |
|---|---|
使用制表符 | 请使用 Tab 键进行缩进。 当复选框未勾选时, IntelliJ IDEA 使用空格而非制表符。 |
智能制表符 |
智能制表符 复选框在启用 使用制表符 选项时可用。 |
制表符大小 | 在此字段中,指定一个选项卡中包含的空格数。 |
缩进 | 在此字段中,指定为每个缩进级别插入的空格数量。 |
连续缩进 | 指定从前一行延续的行的缩进,使其清晰地表示它们是同一语句或代码块的一部分。 当单个语句过长而无法放在一行中时,使用续行缩进。 |
空行时保持缩进 | 如果选中此复选框,IntelliJ IDEA 将会保持空行的缩进,就像它们包含了一些代码一样。 如果取消勾选此复选框,IntelliJ IDEA 将删除制表符和空格。 |
标签缩进 | 在此字段中,指定在下一行的选项卡语句之前插入的空格数量。 |
绝对标签缩进 | 如果选中此复选框,选项卡缩进将被视为绝对空格数。 否则,选项卡缩进将相对于先前的缩进级别进行计数。 |
Do not indent top level class members | 选择此复选框,可以让顶级类成员位于类声明的缩进级别。 |
相对于表达开始使用缩进 | 使用此复选框在两种可能的缩进行为之间切换:
|
空格
选中或清除复选框以在各种上下文中插入、不插入或移除空格。
括号前的空格
条目 | 示例 |
|---|---|
方法声明括号 | 如果选中,将在方法声明的左括号前插入一个空格。 否则,不插入空格。
public void foo (int x, int y) {}
public void foo(int x, int y) {}
|
方法调用括号 | 如果选中,将在方法调用的左括号前插入一个空格。 否则,不插入空格。
System.out.print (a);
System.out.print(a);
|
“if” 括号 | 如果选中,将在
if (0 < x && x < 10) {}
if(0 < x && x < 10) {}
|
“for” 括号 | 如果选中,将在
for (int i = 0; i < x; i++) {}
for(int i = 0; i < x; i++) {}
|
“while” 括号 | 如果选中,将在
while (x != y) {}
while(x != y) {}
|
“switch” 括号 | 如果选中,将在
switch (e.getCode()) {}
switch(e.getCode()) {}
|
“try” 括号 | 如果选中,将在
try (Res r1 = getResource(); Res r2 = null) {}
try(Res r1 = getResource(); Res r2 = null) {}
|
“catch” 括号 | 如果选中,将在
catch (MyException e) {}
catch(MyException e) {}
|
“synchronized” 括号 | 如果选中,将在
synchronized (this) {}
synchronized(this) {}
|
注解参数 | 如果选中,将在注解参数的左括号前插入一个空格。 否则,不插入空格。
@SuppressWarnings ({"ALL"})
@SuppressWarnings({"ALL"})
|
析构列表 | 如果选中,将在解构模式的左括号前插入一个空格。 否则,不插入空格。
case Rec (String s, int i) r -> {}
case Rec(String s, int i) r -> {}
|
围绕操作符
条目 | 示例 |
|---|---|
赋值运算符(=、+=、…) | 如果选中,将在赋值表达式中的赋值操作符周围插入空格。 否则,不会插入空格。
int[] empty = new int[]{};
int[] empty=new int[]{};
|
逻辑运算符(&&、||) | 如果选中,逻辑表达式中的逻辑运算符周围会插入空格。 否则,不会插入空格。
public void checkValue() {
if (0 < x && x < 10) {
}
}
public void checkValue() {
if (0 < x && x < 10) {
}
}
|
相等运算符(==、!=) | 如果选择,比较表达式中的等号运算符周围将插入空格。 否则,不会插入空格。
while (x != y) {}
while (x!=y) {}
|
关系运算符(<、>、<=、>=) | 如果被选中,关系运算符在比较表达式中会插入空格。 否则,不会插入空格。
if (0 < x && x < 10) {}
if (0<x &&x< 10) {}
|
按位运算符(&、|、^) | 如果选中,将在位运算符周围插入空格。 否则,不会插入空格。
y += (y ^ 0x123) << 2;
y += (y^0x123) << 2;
|
加法运算符(+、-) | 如果选中,将在加法运算符周围插入空格。 否则,不会插入空格。
x = f(x * 3 + 5);
x = f(x * 3+5);
|
乘法运算符(*, /, %) | 如果选中,将在乘法运算符周围插入空格。 否则,不会插入空格。
x = f(x * 3 + 5);
x = f(x*3 + 5);
|
移位运算符(>、>>>) | 如果选中,将在位移运算符周围插入空格。 否则,不会插入空格。
y += (y ^ 0x123) << 2;
y += (y ^ 0x123)<<2;
|
一元运算符(!,-,+,++,--) | 如果选中,将在一元运算符周围插入空格。 否则,不会插入空格。
x = y >= 0 ? arr[y] : - 1;
x = y >= 0 ? arr[y] : -1;
|
Lambda 箭头 | 如果选中,将在 lambda 箭头周围插入空格。 否则,不会插入空格。
Runnable r = () -> {};
Runnable r = ()->{};
|
方法引用双冒号 | 如果选中,将在方法引用的双冒号周围插入空格。 否则,不插入空格。
Runnable r1 = this :: bar;
Runnable r1 = this::bar;
|
在左大括号之前
条目 | 示例 |
|---|---|
类左大括号 | 如果选中,类声明中的类名和左大括号之间将插入一个空格。 否则,不插入空格。
public class Main {
}
public class Main{
}
选择或清除复选框只在 大括号位置 为 在类声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
方法左括号 | 如果选中,将在方法声明中方法参数列表的右括号和左大括号之间插入一个空格。 否则,不插入空格。
public int add(int a, int b) {
}
public int add(int a, int b){
}
选择或清除复选框只在 大括号位置 为 在方法声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'if' 左大括号 | 如果选中,条件表达式的闭括号和
if (0 < x && x < 10) {
}
if (0 < x && x < 10){
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'else' 左大括号 | 如果选中,
if (x) {
System.out.println("Hello from x!");
} else {
System.out.println(y);
}
if (x) {
System.out.println("Hello from x!");
} else{
System.out.println(y);
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'for' 左大括号 | 如果选中,条件表达式的结束括号和
for (int a : X) {
System.out.print(a);
}
for (int a : X){
System.out.print(a);
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'while' 左大括号 | 如果选中,条件表达式的结束括号和
while (x != y) {
x = f(x * 3 + 5);
}
while (x != y){
x = f(x * 3 + 5);
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'do' 左大括号 | 如果选中,将在
do {
System.out.println("Count is: " + count);
count++;
} while (count <= 3);
do{
System.out.println("Count is: " + count);
count++;
} while (count <= 3);
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'switch' 左大括号 | 如果选中,条件表达式的闭括号和
switch (e.getCode()) {
}
switch (e.getCode()){
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'try' 左大括号 | 如果选中,将在
try {
get("x");
} catch (Exception e) {
}
try{
get("x");
} catch (Exception e) {
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'catch' 左大括号 | 如果选中,将在
try {
get("x");
} catch (Exception e) {
}
try {
get("x");
} catch (Exception e){
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'finally' 左大括号 | 如果选中,将在
try {
get("x");
} catch (Exception e) {
} finally {
}
try {
get("x");
} catch (Exception e) {
} finally{
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
'synchronized' 左大括号 | 如果选中,将在
synchronized (this) {
switch (e.getCode()) {
}
synchronized (this){
switch (e.getCode()) {
}
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
数组初始值设定项左大括号 | 如果选中,将在数组初始化器的左大括号前插入一个空格。 否则,不插入空格。
int[] empty = new int[] {};
int[] empty = new int[]{};
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
注解数组初始值设定项左大括号 | 如果选中,将在数组初始化器的左大括号前插入一个空格。 否则,不插入空格。
@SuppressWarnings( {"ALL"})
@SuppressWarnings({"ALL"})
选择或清除复选框只在 大括号位置 为 其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。 |
在关键词之前
条目 | 描述 |
|---|---|
'else' 关键字 | 如果选中,将在
if (x) {
System.out.println("Hello from x!");
} else {
System.out.println(y);
}
if (x) {
System.out.println("Hello from x!");
}else {
System.out.println(y);
}
|
'while' 关键字 | 如果选中,一个空格会被插入在
do {
System.out.println("Count is: " + count);
count++;
} while (count <= 3);
do {
System.out.println("Count is: " + count);
count++;
}while (count <= 3);
|
'catch' 关键字 | 如果选中,一个空格将会在
try {
get("x");
} catch (Exception e) {
}
try {
get("x");
}catch (Exception e) {
}
|
'finally' 关键字 | 如果选中,一个空格将会在
try {
get("x");
} catch (Exception e) {
} finally {
}
try {
get("x");
} catch (Exception e) {
}finally {
}
|
在
条目 | 描述 |
|---|---|
代码大括号 | 如果选中,将始终在代码大括号内插入空格。 否则,永远不会插入空格。 |
中括号 | 如果选中,括号内总是会插入空格。 否则,永远不会插入空格。
x = y >= 0 ? arr[ y ] : -1;
x = y >= 0 ? arr[y] : -1;
|
数组初始化大括号 | 如果选中,数组初始化表达式中的括号内总是会插入空格。 否则,不会插入空格。
int[] numbers = { 1, 2, 3, 4, 5 };
int[] numbers = {1, 2, 3, 4, 5};
|
空数组初始化大括号 | 如果选中,将在空数组初始化器
int[] empty = new int[]{ };
int[] empty = new int[]{};
|
分组括号 | 如果选中,复杂表达式中分组括号内的空格将始终插入。 否则,不会插入空格。
y += ( y ^ 0x123 ) << 2;
y += (y ^ 0x123) << 2;
|
方法声明括号 | 如果选中,将在方法声明的括号内插入空格。 否则,不会插入空格。
public void foo( int x, int y ){
}
public void foo(int x, int y){
}
|
空方法声明括号 | 如果选中,将在空方法声明的括号内插入空格。 否则,不会插入空格。
Runnable r = ( ) -> {
};
Runnable r = () -> {
};
|
方法调用括号 | 如果选中,将在方法调用的括号内插入空格。 否则,不会插入空格。
System.out.println( "Hello, World!" );
System.out.println("Hello, World!");
|
空方法调用括号 | 如果选中,将在空方法调用的括号内插入空格。 否则,不会插入空格。
switch (e.getCode( )) {
}
switch (e.getCode()) {
}
|
'if' 圆括号 | 如果选中,那么在
for (int num : numbers) {
if ( x ) {
System.out.println("Hello from x!");
} else {
System.out.println(y);
}
}
for (int num : numbers) {
if (x) {
System.out.println("Hello from x!");
} else {
System.out.println(y);
}
}
|
'for' 圆括号 | 如果选中,
for ( int a : X ) {
System.out.print(a);
}
for (int a : X) {
System.out.print(a);
}
|
'while' 圆括号 | 如果选中,
while ( x != y ) {
x = f(x * 3 + 5);
}
while (x != y){
x = f(x * 3 + 5);
}
|
'switch' 圆括号 | 如果选中,那么在
switch ( e.getCode() ) {
}
switch (e.getCode()){
}
|
“try” 括号 | 如果选中,那么在
try ( MyRes r1 = getRes(); MyRes r2 = null ) {
}
try (MyRes r1 = getRes(); MyRes r2 = null) {
}
|
'catch' 圆括号 | 如果选中,
try {
get("x");
} catch ( Exception e ) {
}
try{
get("x");
} catch (Exception e) {
}
|
“synchronized” 括号 | 如果选中,那么在
synchronized ( this ) {
switch ( e.getCode() ) {
}
synchronized (this) {
switch ( e.getCode() ) {
}
|
类型转换括号 | 如果选中,将始终在类型转换括号内插入空格。 否则,不会插入空格。
int[] arr = ( int[] )g(y);
int[] arr = (int[])g(y);
|
注解括号 | 如果选中,将始终在注解括号内插入空格。 否则,不会插入空格。
@SuppressWarnings( {"ALL"} )
@SuppressWarnings({"ALL"})
|
尖括号 | 如果选中,将始终在尖括号内插入空格。 否则,不会插入空格。
class Bar{
static < U, T > U mess(T t){
return null;
}
}
class Bar{
static <U, T> U mess(T t){
return null;
}
}
|
记录头 | 如果选中,将始终在记录头内插入空格。 否则,不会插入空格。
record Rec( String s, int i ){
}
record Rec(String s, int i){
}
|
析构列表 | 如果选中,将始终在解构列表内插入空格。 否则,不会插入空格。
switch ( o ) {
case Rec( String s, int i ) r -> {
}
}
switch ( o ) {
case Rec(String s, int i) r -> {
}
}
|
显示正文时在块大括号内 | 如果选中,将始终在解构列表内插入空格。 否则,不会插入空格。
if (true) {
System.out.println( "Condition is true" );
}
if (true){
System.out.println( "Condition is true" );
}
|
在三元运算符 (?:) 中
条目 | 描述 |
|---|---|
在'?' 前 在'?' 后 在':' 前 在':' 后 Between '?' and ':' | 选中本节中的复选框,以便在 例如,如果选中了 在'?' 前 和 在':' 后, IntelliJ IDEA 会在三元条件表达式中的
x=y>=0 ?arr[y]: -1;
x=y>=0?arr[y]:-1;
|
类型参数
条目 | 描述 |
|---|---|
在逗号后 | 如果选中,将在多类型的类型参数中逗号后插入空格。 否则,不会插入空格。
Bar.<String, Integer>mess(null);
Bar.<String,Integer>mess(null);
|
在打开尖括号之前 | 如果选中,将在类型参数的左尖括号前插入空格。 否则,不会插入空格。
Bar. <String,Integer>mess(null);
Bar.<String,Integer>mess(null);
|
在关闭尖括号之后 | 如果选中,将在类型参数的右尖括号后插入空格。 否则,不会插入空格。
Bar.<String,Integer>mess(null);
Bar.<String,Integer> mess(null);
|
其他
条目 | 描述 |
|---|---|
在逗号前 | 如果选中,将在参数列表、参数列表、数组声明等中的逗号前自动插入空格。 否则,不会插入空格。
public void foo(int x ,int y){
}
public void foo(int x,int y){
}
|
在逗号后 | 如果选中,将在参数列表、参数列表、数组声明等中的逗号后自动插入空格。 否则,不会插入空格。
public void foo(int x,int y){
}
public void foo(int x, int y){
}
|
在 'for' 分号之前 | 如果选中,将在
for(int i=0 ;i<x ;i++){
y+=(y^0x123)<<2;
}
for(int i=0;i<x;i++){
y+=(y^0x123)<<2;
}
|
在 'for' 分号之后 | 如果选中,将在
for(int i=0; i<x; i++){
y+=(y^0x123)<<2;
}
for(int i=0;i<x;i++){
y+=(y^0x123)<<2;
}
|
在类型转换之后 | 如果选中,将在类型转换的右括号后自动插入一个空格。 否则,不插入空格,强制转换后的变量会粘附到强制转换上。
int[] arr=(int[]) g(y);
int[] arr=(int[])g(y);
|
注解值对中的 '=' 周围 | 如果选中,将在注解值对中的
@Annotation(param1 = "value1", param2 = "value2")
@Annotation(param1="value1", param2="value2")
|
在 foreach 中冒号之前 | 如果选中,将在
for(int a : X){
System.out.print(a);
}
for(int a: X){
System.out.print(a);
}
|
单行枚举大括号内 | 如果选中,将在单行枚举的常量列表的大括号内自动插入空格。 否则,不会插入空格。
public enum Day{ MONDAY,TUESDAY,WEDNESDAY }
public enum Day{MONDAY,TUESDAY,WEDNESDAY}
|
类型参数
条目 | 描述 |
|---|---|
在打开尖括号之前 | 如果选中,将在类型参数的左尖括号前自动插入一个空格。 否则,不插入空格。
public class Foo <T extends Bar&Abba,U>{
public class Foo<T extends Bar&Abba,U>{
|
类型边界周围 | 如果选中,将在类型参数的类型边界周围自动插入空格。 否则,不插入空格。
public class Foo <T extends Bar&Abba,U>{
public class Foo<T extends Bar&Abba,U>{
|
包装和大括号
在此选项卡中,自定义代码样式选项,IntelliJ IDEA 将在 重新格式化源代码 时应用。 左侧窗格包含异常列表(重新设置格式时保持 ),以及各种代码结构(列表、语句、操作、注解等)的放置和对齐选项。 右侧窗格显示预览。
对齐设置优先于缩进选项。
在以下位置硬包装
使用 强制换行位置 字段指定元素右侧所需的边距空间。 如果您选择了 默认 选项,那么将使用 全局设置中的右边距值。
输入时自动换行
使用 键入时换行 设置来指定如何将编辑的文本适应到指定的 强制换行位置 中:
默认 :在这种情况下,IntelliJ IDEA 使用的是 键入时换行 选项,该选项在 全局设置中指定。
是 :在这个例子中,IntelliJ IDEA 使用了在 右边距 字段里指定的值。
否 :在这种情况下,此选项被关闭,一行可以超过右侧边距指定的值。
视觉指南
使用 视觉参考线 字段来指定多个右边距。 您可以保留默认值,或者输入您的边距所需的空格数。 如果您想要指定多个边距,请输入由顿号分隔的数字。
在重新格式化时保持
在重新格式化源代码时,使用复选框来配置 IntelliJ IDEA 将要做出的异常。 例如,默认情况下, 换行符 复选框被选中。 如果您的代码包含的行数比标准规范短,您可以在 换行符 多选框前取消选中,然后您再 重新格式化源代码以转换它们。
包装选项
换行样式应用于左侧窗格中指定的各种代码构造(例如,方法调用参数、方法声明参数或赋值语句)。
条目 | 描述 |
|---|---|
包装风格 | 从这个列表中,选择您想要的换行样式:
|
对齐选项
条目 | 描述 |
|---|---|
多行时对齐 | 如果选中此复选框,代码构造将在每一行的同一列开始。 否则,代码结构的位置由当前的缩进级别确定。 |
| 选择此复选框,当行被包装时,将指定的字符或字符移至下一行。 |
'else' 在新的一行 | 使用此复选框,将相应的语句或字符移至下一行。 |
在 | 选择此复选框,可以将指定字符后的代码移至新行。 |
特别的 'else if' 处理 | 如果选中此复选框, 否则, |
缩进 'case' 分支 | 如果选中此复选框, |
大括号放置选项
条目 | 描述 |
|---|---|
大括号放置风格 | 使用此列表指定 类声明、 方法声明及其他类型声明中左大括号的位置。 可用选项包括:
|
强制使用大括号 | 从这个列表中,为
|
链式方法调用
使用以下选项来格式化链接的方法调用,使其更易于阅读。 请注意,无论链式调用的设置如何,构建器方法的调用总是被包装的。
条目 | 描述 |
|---|---|
包装第一次调用 | 允许在链式方法中包装第一个方法调用。 |
多行时对齐 | 对几个方法调用进行对齐。 |
构建器方法 | 指定您希望被视为构建器方法的方法名称(标识符),用逗号分隔。 例如: |
保持构建器方法的缩进 | 在重新格式化代码时,保持手动插入的额外缩进不变。 |
空白行
使用此选项卡定义在重新格式化后,您希望 IntelliJ IDEA 保留并在您的代码中插入多少空行以及在何处插入。 对于每种类型的位置,请指定要插入的空行数量。 结果将在预览窗格中显示。
条目 | 描述 |
|---|---|
保持最大的空白行 | 在此区域,指定在指定位置重新格式化后要保留的空行数。 |
最小的空白行 | 在此区域,指定在指定位置应存在的空行数量。 |
JavaDoc
条目 | 描述 |
|---|---|
Alignment | 定义 Javadoc 注释的对齐方式。
|
Blank lines | 定义在 Javadoc 注释中应插入空白行的位置。
|
Invalid tags | 在此区域内,定义是否应保留无效的选项卡。
|
Other | 在此区域中,为 Javadoc 注释指定附加格式化选项。
|
安排
这个选项卡允许您根据您的偏好定义一套重新排列您的代码的规则。
条目 | 描述 |
|---|---|
分组规则 | 使用此区域来设置分组规则。
|
匹配规则 | 在此区域定义元素顺序,这是一组规则的列表,每个规则有一组匹配项,如修饰符或类型。
|
空规则 | 使用这个区域创建新的匹配规则,或编辑已有的规则。 您可以从以下筛选器中选择:
|
当您从 订单 列表中选择 Order by Name时,会出现此图标。 图标表示此规则中的项目按字母顺序排序。 |
导入
这个表格列出了优化导入时需要执行的操作。
条目 | 描述 |
|---|---|
常规 | 在此区域,配置通用导入选项。 选项:
|
JSP 导入布局 | 在此区域中,配置您的代码中 JSP 导入语句应如何组织。 引入的更改将在下面的 预览 面板中显示。 选项:
|
使用 '*' 导入的包 | 在此区域中,配置一份始终完整导入的包和类的列表。 选项:
|
导入布局 | 在此区域,配置您的代码中应如何组织 import 语句。 您可以设置某些类别,使其被放置在最前方,或者最后,或者依次排列。 导入的类将按照其包进行分组,并在包内按字母顺序排序。 选项:
|
代码生成
条目 | 描述 |
|---|---|
命名 |
|
缺省可见 | 选择生成的字段和方法的默认访问级别。 您可以直接明确指定,或选择 升级 自动提升到必要的级别。 |
变量声明 | 请指定默认情况下是否希望生成带有 |
注释代码 | 在此区域配置生成注释的代码样式(行 Ctrl+/ 和块 Ctrl+Shift+/):
|
重写方法签名 | |
Lambda 体 | 如果一个 lambda 表达式调用了一个已存在的方法,最好通过方法引用来按名称引用该方法。 这些复选框影响 Lambda 可以被方法引用替换 的检查。 如果启用,相应的 lambda 表达式将作为警告高亮显示,并提供相关的快速修复。 如果禁用,代码将不会被高亮显示,但仍然可以使用意图来替换 lambda 表达式为方法引用。
|
