2013-07-25 16 views
0

我一直在想,如果有任何方式重新使用,例如字符串:重用字符串在Java中

import java.io.Console; 

public class input { 
    public static void main (String[] args) { 
     Console console = System.console(); 
     String input = console.readLine("Type username: "); //user input 
     // name code 
     // clear string 
     String input = console.readLine("Hello, what would you like to do: "); 
     // other code 
    } 
} 

通過在//clear string清除字符串,所以如果你有一個環形的用戶輸入,如果事情不來真實的,它不會中斷。

+1

只需申報一次,根據需要分配多次 – Reimeus

+0

您可以爲它指定一個特定的值,也許是「」,以防您擔心之前有問題的值 – StephenTG

+0

值得一提的是,在實際操作中不太可能節省任何內存:如果您使用新變量,則只要停止使用舊變量,就可以使用舊變量進行GC'd操作。真的,你在這裏試圖重用你的變量沒有獲得任何好處。 –

回答

0
String input= console.readLine("Type username: "); //this is legal 

//然而下一行不會是 String input = c onsole.readLine(「你好,你想做什麼:」);

//代替代碼應該是這樣的:

String input= console.readLine("Type username: "); 

輸入=控制檯。readLine(「你好,你想做什麼:」);

這個替換字符串輸入,你能「重用」它

+0

正是我需要的! – Collinscripter

2

在您的示例中,您將重新聲明input。相反,你可以重新分配:

input = console.readLine("Hello, what would you like to do: "); 

注意:您將無法在變量聲明爲final重新分配。

重新聲明變量是一個選項的唯一時間是變量聲明在loop內。它可能是有意義的做,如果該變量將不loop範圍外使用,即:

while(someCondition) 
{ 
    String s = ...; 
} 

否則重新聲明變量在語義上禁止的。

+0

它在語義上實際上是禁止的。沒有關於這個的語法。 – EJP

5

您無法多次聲明相同的變量。但是,如果您尚未聲明最終結果,您可以隨時重新分配。

0

你不需要每次只聲明一次,只需要一次。

0

在java對象中被自動刪除,所以如果你重新分配你的本地引用到第一個字符串,它會被垃圾回收器刪除,因爲沒有人再使用它。

在java中特別想到的是,字符串是不可變的。這意味着,對象字符串不能被更改,並具有它的值,直到它被垃圾收集器刪除。

在你上面的例子,你確實有重新分配

input = console.readLine("Hello, what would you like to do: "); 
0

重新聲明一個String的值將始終替換現有的值。因此,如果您只是給它一個不同的值(例如重新聲明int的值),則沒有必要「清除」字符串的值。

此代碼的具體問題在於您聲明字符串在此代碼「輸入」的兩倍。聲明僅在任何類需要一次。你可以通過簡單地調用

input = console.readLine("Hello, what would you like to do: "); 

這將重新分配值輸入更改值。

+0

這是分配,不重新聲明。 – EJP

0

「清除字符串」很簡單,只要

input = ""; 

你不需要重新聲明變量。只要你在變量的範圍內(相同的方法,或者如果變量是類範圍的,類),你就沒事。