今天在用android studio 2.0的時候碰到個奇怪問題:我用StringBuilder生成一個字符串,但是用studio自帶的代碼檢測程序優(yōu)化代碼時,缺把StringBuilder改成了String型“+”連接。這是什么原因呢?不是StringBuilder應該比“+”性能更好嗎?這是自動替換后的
String sb = "CREATE TABLE IF NOT EXISTS " +
appContext.getString(R.string.tbl_name) +
"(_id INTEGER PRIMARY KEY AUTOINCREMENT" +
",account VARCHAR" +
",psw VARCHAR" +
",memo TEXT)";
這是我之前寫的
StringBuilder sb = new Stringbuilder();
sb.append(xxxx)
.
.
.
db.execSql(sb.toString());
4 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
全是常量的拼接編譯器會給你優(yōu)化,你可以查看替換后的文件編譯后class文件的字節(jié)碼,應該是優(yōu)于你寫的
想想 scort說的應該是有道理的,編譯器應該在編譯階段把string常量的+連接進行了優(yōu)化,就不需要StringBuilder了

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
編譯器內部優(yōu)化了連接符,如果是常量,通過常量池的方式直接拼接
如果非常量,大多數(shù)情況會在內部類似這樣優(yōu)化,new StringBuilder().append(),最后會調用toString(),至少jdk1.7上是這樣的
添加回答
舉報
0/150
提交
取消