Re: [J2SE] Java String觀念請教?
※ 引述《jtmh ()》之銘言:
: 我也是這麼覺得,
: 不過如果再詳細去看 toUpperCase() 的說明:
: http://java.sun.com/javase/6/docs/api/java/lang/String.html#toUpperCase()
: "... This method is equivalent to toUpperCase(Locale.getDefault())."
: 會發現有牽扯到 Locale.getDefault() 的實作,
: 如果再進一步去追一下它的 source code,
: 就會發現其實還有機會產生其他的 String objects.
嗯嗯, 我去稍稍追了一下source, 除了String
還包括 ConditionalSpecialCasing, Character, CharacterDataLatin1, Locale
在String的toUpperCase內,會用到 Locale 的 .getLanguage()
其直接回傳的是一個language變數, 是String型別,
所以在這之前, 它已經產生好了
Locale.getDefault()
只有在內部defaultLocale為null時要執行重新產生的碼
但是JVM在startup會執行 setDefault()
因此除外有某種意外, 使得裡面的defaultLocale變成null,
這時才會導致不得不再重新產生, 此時產生碼確實會建立String物件
其實再追Character相關的, 會發現操作除了有Locale 的 .getLanguage()
其它都在char[], int, char上面, 也就是沒動到String
如果我沒有漏看什麼的話 0.0>
這題目算出的蠻謹慎的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.219.93
推
05/02 01:18, , 1F
05/02 01:18, 1F
→
05/02 01:19, , 2F
05/02 01:19, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):