Les exemples de cet article résument l'utilisation des chaînes en Java. Partagez-le avec tout le monde pour votre référence. L’analyse spécifique est la suivante :
L'essence d'une chaîne est un tableau de type char, mais en Java, toutes les chaînes déclarées avec des guillemets doubles "" sont des objets de la classe String. Cela reflète également les caractéristiques du langage entièrement orienté objet de Java.
Classe de chaîne
1. L'objet de classe String représente une chaîne constante. C’est d’une longueur immuable. En d’autres termes, une fois qu’une instance de la classe String est créée, la chaîne représentée par cette instance ne peut plus être modifiée. Semblable à
str = str + "Bonjour" ;
Cette opération crée essentiellement un nouvel objet String en combinant les deux objets String str et "Hello", puis attribue la référence du nouvel objet String à str. Une utilisation intensive de cette opération peut entraîner des défauts de performances. Si vous devez modifier fréquemment le contenu de la chaîne, vous devez utiliser la classe StringBuffer ou la classe StringBuilder. Nous pouvons utiliser un petit programme pour voir l'ampleur de la différence de performances entre les classes String et StringBuffer.
class StringTest { public static void main(String[] args) { /** * Effectuer 10 000 opérations d'ajout en utilisant respectivement les objets String et StringBuffer * Temps d'exécution du test * 2013.3.18 */ String constStr = "" long lTime = System . currentTimeMillis(); for(int i = 0; i < 10000; ++i) constStr += i; System.out.println("Const String:"+(System.currentTimeMillis()-lTime)); StringBuilder strBuf = new StringBuilder(""); lTime = System.currentTimeMillis(); 10000 ; ++i) strBuf.append(String.valueOf(i)); System.out.println("Buffered Chaîne : "+(System.currentTimeMillis()-lTime)); } }Résultat de l'exécution :
On peut voir que StringBuilder prend quelques secondes, mais la classe String prend 300 ms, ce qui montre l'énorme différence de performances.
StringBuilder et StringBuffered représentent tous deux un objet chaîne de longueur variable (mutable). La différence entre eux est que la classe StringBuffered effectue un traitement de sécurité en termes de synchronisation des threads, tandis que StringBuilder fait le contraire. Donc si vous programmez uniquement sur une seule ligne, StringBuilder est légèrement plus efficace que StringBuffered (en fait la différence n'est pas grande)
2. "Hello World" est un objet String Nous pouvons utiliser "Hello World" directement comme objet, tel que :
if("Bonjour".equals("Bonjour")) System.out.println("Oui");Le résultat de sortie est Oui.
3. Lorsque vous comparez des objets chaîne, vous devez utiliser la méthode equals() au lieu d'utiliser simplement == pour juger. Étant donné que == compare si les instances référencées par deux noms de référence sont identiques, la méthode equals() compare si les chaînes des deux objets sont égales.
Une question courante est la suivante : combien d'objets String l'extrait de code suivant génère-t-il au total ?
String str1 = new String("Bonjour");String str2 = new String("Bonjour");La plupart des gens répondront probablement 2. Mais en fait, un total de 3 objets String sont générés ici. En plus de str1 et str2, n'oubliez pas que "Hello" est aussi un objet String.
4. Pool de chaînes (Pool)
Java conserve un pool de chaînes lors de l'exécution. Lorsqu'une chaîne déclarée par des guillemets doubles apparaît, la JVM vérifiera d'abord si le même objet String (avec les mêmes caractères) existe dans la mémoire. S'il existe, elle renverra une référence à l'objet qui existe déjà dans la mémoire. il n'existe pas, il va le créer. Un nouvel objet String. Cela économise de la mémoire. Comme le montre le morceau de code suivant, str1 et str2 pointent en fait vers le même objet String.
String str1 = "Bonjour";String str2 = "Bonjour";
5. Recevoir les paramètres de ligne de commande
Lorsque nous déclarons la méthode principale, nous déclarons un paramètre formel de type String[]. Ce tableau d'objets String stocke les paramètres de ligne de commande transmis par l'utilisateur lors de l'exécution de ce programme. Notez que contrairement au langage C, les paramètres de ligne de commande en Java commencent à partir de la première variable après le nom du programme. En d'autres termes, les données String[] n'incluent pas le nom de l'application. Par exemple:
class strCmd { public static void main(String[] args) { if(args.length > 0) { for(String str : args) System.out.println(str } } }Le résultat lors de l’exécution de java strCmd Hello World !
6. Séparation des chaînes
Semblable à strtok en langage C, la classe String possède également une méthode split qui peut séparer une chaîne dans un format spécifié. La méthode split renvoie un tableau d'objets String, représentant chaque chaîne séparée. comme:
class strSplit { public static void main(String[] args) { String str = "Hello/tWorld/tI/tLove/tYou!"; System.out.println("Original String : " + strStrArr); str.split("/t"); for(String s : strArr) System.out.println(s);Parmi eux, les paramètres de la méthode split() peuvent être des expressions régulières. Vous pouvez utiliser la méthode statique matches() de la classe Matcher dans le package java.util pour déterminer si une chaîne correspond à une expression régulière.
La classe String possède de nombreuses autres fonctions puissantes et nous devrions apprendre à lire la documentation de l'API. Ici, l'importance de l'anglais se reflète...
J'espère que cet article sera utile à la programmation Java de chacun.