差異處
這裏顯示兩個版本的差異處。
java:basic:string [2017/08/19 23:33] 127.0.0.1 外部編輯 |
java:basic:string [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>java}} | ||
- | ====== String ====== | ||
- | ===== 有效率的寫法 ===== | ||
- | ==== 宣告 ==== | ||
- | 在fix findubg系列文章中有提到的寫法:([[java:code_quality:findbug:dm_string_void_ctor|DM_STRING_VOID_CTOR]]、[[java:code_quality:findbug:dm_string_ctor|DM_STRING_CTOR]]) | ||
- | <code java> | ||
- | String bad1 = new String("test"); | ||
- | String bad2 = new String(); | ||
- | </code> | ||
- | V.S. | ||
- | <code java> | ||
- | String good1 = "test"; | ||
- | String good2 = ""; | ||
- | </code> | ||
- | 主要原理是由於"test"與""在編譯時就就已決定放置於Constant Pool。new String("test")在編譯時也會將"test"放到Constant Pool,然後Runtime會再去做new String的動作。這是不必要的浪費! | ||
- | ===== Reference ===== | ||
- | * [[http://hi.baidu.com/boywell/item/d5ee5b0cc0af55c875cd3cfd|Java对String字符串对象的创建,管理和“+”运算符的实现]] | ||
- | |||
- | ===== ===== | ||
- | ---- | ||
- | \\ | ||
- | ~~DISQUS~~ |