java - 为什么用String替换StringBuilder
黄舟
黄舟 2017-04-18 10:25:48
0
4
665

今天在用android studio 2.0的时候碰到个奇怪问题:
我用StringBuilder生成一个字符串,但是用studio自带的代码检测程序优化代码时,缺把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());
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(4)
PHPzhong

Le compilateur d'épissage composé uniquement de constantes l'optimisera pour vous. Vous pouvez vérifier le bytecode du fichier de classe compilé du fichier remplacé. Il devrait être meilleur que ce que vous avez écrit

.

En y réfléchissant, ce que dit scort devrait avoir du sens. Le compilateur doit optimiser la + connexion des constantes de chaîne pendant la phase de compilation, il n'y a donc pas besoin de StringBuilder

阿神

Le compilateur optimise en interne le connecteur S'il s'agit d'une constante, il est directement épissé via le pool de constantes

S'il n'est pas constant, dans la plupart des cas il sera optimisé en interne comme ceci, new StringBuilder().append(), et enfin toString() sera appelé, au moins sur jdk1.7

刘奇

Le contenu de l'objet StringBuilder peut être modifié, ce qui est meilleur que la classe String en termes d'utilisation de la mémoire
L'objet String ne peut pas être modifié une fois généré. La réaffectation est en fait deux objets.

Donc, en utilisation réelle, si vous avez souvent besoin de modifier une chaîne, comme une insertion, une suppression, etc., il est plus approprié d'utiliser StringBuilder.

De plus, le vérificateur de l'éditeur n'est qu'une spécification, pas forcément la meilleure.

Peter_Zhu

Il s'agit de l'optimisation du compilateur. Si vous avez plusieurs lignes, c'est-à-dire plusieurs ";" comme connexions, il ne sera pas optimisé

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!