簡體   English   中英

局部變量是冗余的 JetBrains IDE(例如 IntelliJ IDEA)

[英]Local variable is redundant JetBrains IDEs (e.g. IntelliJ IDEA)

public static double getAmount(){
    Scanner reader = new Scanner(System.in);
    System.out.println("random text");
    double amount;
    return (amount = reader.nextDouble());
}

IntelliJ 在上面的代碼中給了我這個警告:

局部變量 'amount' 是多余的

為什么?

在方法體中(在 { 和 } 之間)聲明的任何變量都將在該方法結束時被刪除(垃圾收集)。 (除非您將其分配給未在方法主體中創建的內容)

您在運行時創建變量“amount”:

 double amount;

此時,您已經創建了變量,但從未為其分配值。 你第一次使用這個變量是在你的 return 語句中:

return (amount = reader.nextDouble());

您應該做的是在與聲明相同的行上分配變量:

public static double getAmount(){
    Scanner reader = new Scanner(System.in);
    System.out.println("random text");
    double amount  = reader.nextDouble();
    return amount;
}

或者,更好的是,根本不使用該變量(盡管它可能會提高代碼可讀性,在這種情況下,可以提出有效的觀點來保留它):

public static double getAmount(){
        Scanner reader = new Scanner(System.in);
        System.out.println("random text");

        return reader.nextDouble();
    }

為什么 Intellij 會警告我?
Intellij 只是告訴您,最終您的變量沒有被使用(不是),因此刪除變量聲明是安全的。

但是,如果您將鼠標懸停在出現在代碼行開頭的小燈泡上,Intellij 也應該為您提供一個解決方案,就像我剛才所做的那樣。 一個例子: 在此處輸入圖片說明

它告訴您,您可以簡單地返回reader.nextDouble()並且您不需要為此目的的可變amount

因為你沒有用它做任何事情。 代碼可以簡化為:

public static double getAmount(){
    Scanner reader = new Scanner(System.in);
    System.out.println("random text");
    return reader.nextDouble();
}

你可以做

 return reader.nextDouble();

那個變量聲明和賦值占用了內存。

嘗試關閉冗余局部變量的檢查模式。 或者你可以簡單地做:

return reader.nextDouble();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM