Java 局部变量为冗余JetBrains IDE(例如IntelliJ IDEA)

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

IntelliJ针对上述代码向我发出警告:

局部变量“amount”是冗余的


为什么?

它告诉您只需返回
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();