Java在其Java7中引入了帶有Strings的開關盒。我想知道如果使用這種開關情況會造成垃圾。開關盒用Java中的字符串 - garbagy?
例如,在我的程序,
String s = getString();
switch(s)
{
case ABC: // ABC is a final static constant
...
case CDE: // CDE is also final static constant.
...
}
java中如何執行該開關的情況。假設有10個這樣的開關盒。它會在每次匹配string s
和case ABC
等時創建一個新字符串嗎?
如果是這樣的話,那是非常garbagy的,所以當我給100個case的switch case時,每次100個字符串都會被創建。
有沒有理由需要創建任何額外的字符串來做到這一點,被檢查的字符串和被比較的字符串(你的常量)都已經被定義和緩存在perm gen空間中。 – Adrian 2013-03-21 16:15:44
爲什麼你認爲它會創建一個新的字符串? – blank 2013-03-21 16:19:18