stringbuilder - java StringBuilding 定义
PHP中文网
PHP中文网 2017-04-18 10:18:25
0
6
737

这2种定义方式 有不同吗??
第一种会慢吗?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(6)
伊谢尔伦

Réponse : Tout aussi rapide

Opération d'initialisation de chaîne :

String s= "a"+"b";
String s1= "ab";

De cette façon, le compilateur est le même par défaut. Donc ça ne sera pas lent

Autre exemple :

  String a= "a";
  String b = "b";
  String s2= a+b;

Le s2 produit ainsi est très lent car la mémoire est sollicitée trois fois.

J'espère que vous l'adopterez et me donnerez des points si vous êtes satisfait. . Je suis un nouveau membre et j'espère vous servir tous ! ! ! (Je veux vraiment donner -1 point à la première réponse, et donner quelques réponses aléatoires)

阿神

Le premier type n'est pas seulement un problème lent, mais un morceau de code qui ressemble à de la merde.

new StringBuilder("a").append("b").append("c");

new StringBuilder("a" + "b" + "c");

Si vous l'utilisez comme ci-dessus, il est préférable d'utiliser "a" + "b" + "c" directement car il n'utilise aucune fonctionnalité de StringBuilder Avec l'optimisation de la compilation de JDK, le code final deviendra le suivant.

new StringBuilder(new StringBuilder("a").append("b").append("c").toString());

Je ne comprends pas du tout le deuxième. Quelle est l’importance d’utiliser StringBuilder ? N'est-ce pas juste une chaîne en soi ?

迷茫

javap -cÉcoutez, le compilateur doit assembler les constantes de chaîne avec lesquelles vous avez connecté +, et les deux méthodes d'écriture doivent fonctionner de la même manière.

小葫芦

Les constantes directement +
Les variables peuvent également être utilisées +
Si vous vous souciez des performances, lisez ceci : http://calvin1978.blogcn.com/...

PHPzhong

Tant que le caractère d'épissage '+' n'est pas utilisé entre les objets, il n'y a fondamentalement aucune différence entre utiliser ou non le caractère d'épissage '+' entre les chaînes et une fois l'objet chaîne généré, il sera modifié pour générer ; un autre objet. L'épissage entre tous les objets chaîne sera très lent ;

public static void main(String[] args) {

fun1(10000000);
>

privé static void fun1 (int length){

long min1 = new Date().getTime();
System.out.println(min1);
//1
for(int i=0;i<length;i++){
    new StringBuffer("字符1;" +
            "字符2;" +
            "字符3;" +
            "字符4;" +
            "字符5;");
}
long min2 = new Date().getTime();
System.out.println(min2);
System.out.println(min2-min1);
>

vide statique privé fun2 (longueur int){

long min1 = new Date().getTime();
System.out.println(min1);
//2
for(int i=0;i<length;i++){
    new StringBuffer("字符1;字符2;字符3;字符4;字符5;");
}
long min2 = new Date().getTime();
System.out.println(min2);
System.out.println(min2-min1);
>

vide statique privé fun3 (longueur int){

long min1 = new Date().getTime();
System.out.println(min1);
//3
for(int i=0;i<length;i++){
    String aa = "字符1;" +
    "字符2;" +
    "字符3;" +
    "字符4;" +
    "字符5;";
    new StringBuffer(aa);
}
long min2 = new Date().getTime();
System.out.println(min2);
System.out.println(min2-min1);
>

vide statique privé fun4 (longueur int){

long min1 = new Date().getTime();
System.out.println(min1);
//3
for(int i=0;i<length;i++){
    String aa = "字符1;" ;
    aa +="字符2;" ;
    aa +="字符3;" ;
    aa +="字符4;" ;
    aa +="字符5;";
    new StringBuffer(aa);
}
long min2 = new Date().getTime();
System.out.println(min2);
System.out.println(min2-min1);
}

巴扎黑

Ces deux méthodes de création d'objets sont plus rapides et plus lentes. En fait, elles peuvent être converties en deux méthodes suivantes pour comparer plus rapidement et plus lentement :

String a = "Test";
String b = "T" + "e" + "s" + "t";

Bien sûr, ces deux méthodes sont également rapides. Dans la JVM, "T" + "e" + "s" + "t" sont en fait traités comme "Test".
Jetons maintenant un coup d'œil à la méthode d'épissage de cordes suivante :

String a = "Te";
String b = a + "st";

La méthode ci-dessus est le moyen le moins efficace d'épisser des chaînes et est extrêmement déconseillée, car lors de l'épissage de chaînes comme celui-ci, la JVM génère en fait un nouveau StringBuilder, puis appelle la méthode append, puis exécute toString. tout simplement aussi lent qu'un chien (chien : je suis encore allongé sur le pistolet...)
Donc pour résumer : les deux nouvelles méthodes StringBuilder écrites par le sujet sont en fait la même méthode, et l'efficacité est la même. Personne ne peut être trompé.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal