Maison >Java >javaDidacticiel >La connexion et la différence entre String et StringBuffer en Java

La connexion et la différence entre String et StringBuffer en Java

Y2J
Y2Joriginal
2017-04-27 13:14:001666parcourir

Cet article présente principalement des informations pertinentes et des exemples détaillés de la différence entre String et StringBuffer en Java. Un petit exemple pour tester la différence d'utilisation du temps et de l'espace entre String et StringBuffer. Les amis dans le besoin peuvent s'y référer

<.>

Exemples détaillés de la différence entre String et StringBuffer en java

String :

C'est un objet, pas de type primitif.

C'est un objet immuable. Une fois créé, sa valeur ne peut pas être modifiée
Les modifications de l'objet String existant consistent à créer un nouvel objet puis à y enregistrer la nouvelle valeur. .
String est une classe finale, c'est-à-dire qu'elle ne peut pas être héritée

StringBuffer :

. C'est un objet mutable, lorsqu'il est modifié, l'objet ne sera pas recréé comme String

Il ne peut être créé que via le constructeur,
StringBuffer sb = new StringBuffer();
Après l'objet est créé, il sera en mémoire Il allouera de l'espace mémoire et enregistrera initialement une valeur nulle via sa méthode append Évidemment supérieure à String :


L'objet String est un objet immuable. Chaque fois que Sting est utilisé, un nouvel objet sera recréé pour enregistrer la nouvelle valeur.

Une fois l'objet StringBuffer instancié, seule cette opération d'objet An.


J'ai écrit un petit exemple ici pour tester la différence d'utilisation du temps et de l'espace entre String et StringBuffer.



Résultats des tests :

public class Test {  
  public static void main(String args[]) {  
    String str = "abc";  
    StringBuffer sb = new StringBuffer("abc");  
    Runtime runtime = Runtime.getRuntime();  
    long start = System.currentTimeMillis();  
    long startFreememory = runtime.freeMemory();  
    for (int i = 0; i < 10000; i++) {  
      str += i;  
      //测试StringBuffer时候把注释打开  
      //sb.append(i);  
    }  
    long endFreememory = runtime.freeMemory();  
    long end = System.currentTimeMillis();  
    System.out.println("操作耗时:" + (end - start) + "ms," + "内存消耗:"  
        + (startFreememory - endFreememory)/1024 + "KB");  
  }  
}
Utilisez String pour ajouter une chaîne à une chaîne 10 000 fois

Temps de fonctionnement : 1872 ms, consommation de mémoire : 1301 Ko

Utilisez StringBuffer pour ajouter une chaîne à une chaîne 10 000 fois

Temps de fonctionnement : 15 ms, consommation de mémoire : 162 Ko

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn