Java 局部变量为冗余JetBrains IDE(例如IntelliJ IDEA)
IntelliJ针对上述代码向我发出警告: 局部变量“amount”是冗余的Java 局部变量为冗余JetBrains IDE(例如IntelliJ IDEA),java,intellij-idea,jetbrains-ide,Java,Intellij Idea,Jetbrains Ide,IntelliJ针对上述代码向我发出警告: 局部变量“amount”是冗余的 为什么?它告诉您只需返回reader.nextDouble(),您不需要变量amount。因为您没有使用它。代码可以简化为: public static double getAmount(){ Scanner reader = new Scanner(System.in); System.out.println("random text"); double amount; return
为什么?它告诉您只需返回
reader.nextDouble()
,您不需要变量amount
。因为您没有使用它。代码可以简化为:
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
double amount;
return (amount = reader.nextDouble());
}
你可以这么做
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
return reader.nextDouble();
}
变量声明和赋值正在占用内存。在方法体中声明的任何变量(在{和}之间)都将在该方法结束时被删除(垃圾收集)。(除非将其指定给方法体中未创建的对象) 运行时,您正在创建变量“amount”:
return reader.nextDouble();
此时,您已经创建了变量,但从未为其赋值。
第一次使用此变量是在return语句中:
double amount;
您应该做的是在声明的同一行上分配变量:
return (amount = reader.nextDouble());
或者,更好的是,根本不要使用该变量(尽管它可能会提高代码可读性,在这种情况下,可以提出一个有效点来保持它):
为什么Intellij会警告我?Intellij只是告诉您,最终您的变量没有被使用(它没有),因此删除变量声明是安全的 然而,Intellij也应该为您提供一个解决方案,就像我刚才将鼠标悬停在代码行开头出现的小灯泡上所做的那样。 例如:
尝试关闭冗余局部变量的检查模式。或者,您可以简单地执行以下操作:
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
return reader.nextDouble();
}
旁注:请不要调用执行诸如IO
getSomeName()
等复杂操作的方法-由于JavaBeans约定,我们被训练为期望具有此类名称的方法是廉价的(通常无副作用)字段访问器。(这同样适用于isSomething()
和hasSomething()
)-像ReadSomething()
这样的名称更可取。不要让其他程序员(包括你未来的自己)感到惊讶,也许不会。取决于实时编译器对它的处理。有时保留变量会使调试更容易,但对每个变量都有自己的作用
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
return reader.nextDouble();
}
return reader.nextDouble();