In Loop for n-iterations {
// I am doing a check below
if (params.contains("test") {
}
}
將字符串test
被創建爲對象n
次?
In Loop for n-iterations {
// I am doing a check below
if (params.contains("test") {
}
}
將字符串test
被創建爲對象n
次?
號。"test"
是一個字符串字面,所以它進入字符串常量池並將於重用未來所有「測試」的訪問。如果你做new String("test")
(創建字符串的錯誤方式),那麼會創建字符串「測試」的幾個實例 - 每個迭代一個
另外值得注意的是,任何其他輸出代表「test」的String對象的方法幾乎都是一定要創建其他實例。 – 2015-01-21 12:40:38
@JRichardSnape - 這取決於..例如,如果你在''test''上調用'trim()',那麼同樣的''test''實例將被返回。 – TheLostMind 2015-01-21 12:56:59
絕對 - 因此「幾乎」確定。說實話,它有點偏離了確切的問題。它可能是一些討厭的「陷阱」的來源,因此我的評論,但你已經回答了這個問題。 – 2015-01-21 12:59:17
編號"test"
是一個獨特的對象,存儲在字符串池中。因此,它甚至與您在應用程序中其他位置可能具有的任何其他"test"
字面相同。
否。會爲''test「'創建一個字符串實例。實際上Java對緩存和重用'String'實例相當積極。有關進一步的討論,請參閱:http://stackoverflow.com/questions/3801343/what-is-string-pool-in-java – aroth 2015-01-21 12:24:57