Maison >Java >javaDidacticiel >Maîtriser complètement la classe String de Java

Maîtriser complètement la classe String de Java

WBOY
WBOYavant
2022-05-25 13:41:331693parcourir

Cet article vous apporte des connaissances pertinentes sur java Il présente principalement des problèmes connexes concernant la classe string, notamment le pool constant de chaînes, l'immuabilité des chaînes, etc.

Maîtriser complètement la classe String de Java

Apprentissage recommandé : "Tutoriel vidéo Java"

1. Comprendre String

1 String dans JDK

Tout d'abord, jetons un coup d'œil au code source de la classe String dans JDK. vous pouvez voir que la classe String a été modifiée par final, ce qui signifie que la classe String ne peut pas être héritée et qu'il n'y a pas de sous-classe de String. De cette façon, toutes les personnes qui utilisent le JDK utilisent la même classe String si String est autorisée. pour être hérité, tout le monde peut étendre la chaîne. La chaîne utilisée par tout le monde n'est pas la même version. Deux personnes différentes utilisent la même méthode et affichent des résultats différents. Cela rend le code impossible à développer. band Tout en apportant de la flexibilité, cela entraînera également de nombreux problèmes de comportement incohérent des sous-classes

Maîtriser complètement la classe String de Java

2 Quatre façons de créer des chaînes

Méthode 1 : affectation directe (couramment utilisée)

String str = " bonjour mot "

Méthode. 2 : Générer des objets via la méthode de construction

String str1 = new String(" hello word ");

Méthode 3 : Générer des objets via des tableaux de caractères

char[] data = new char[]{'a', 'b', 'c'};

Méthode 4 : Utiliser la méthode statique de String valueOf (n'importe quel type de données) = >Convertir en chaîne (couramment utilisée)

String str2 = String.valueOf(10);

Maîtriser complètement la classe String de Java

3.

Littéral : La valeur directement écrite est appelée littéral

10 – > int littéral

10.1 ---> double littéral
vrai --> un objet chaîne
String str = "bonjour mot";
String str2 = str; À ce stade, c'est à la fois un littéral d'une chaîne et un objet d'une chaîne. Pour faciliter la compréhension, faites un dessin. pour faciliter la compréhension, nous pensons temporairement qu'il est stocké sur le tas. En fait, il est stocké dans la zone méthode. Si str2 = "Hello" à ce moment-là, cela n'affectera pas la sortie de str. by " " est également un objet chaîne, cela signifie qu'un nouvel espace est ouvert sur le tas à ce moment, et str2 enregistre l'espace d'adressage du nouvel objet à ce moment, ce qui n'a aucun effet sur str



4. La comparaison des chaînes de caractères est égale

Tous les types de données de référence utilisent la méthode égale pour comparer si elles sont égales. Les classes courantes du JDK ont remplacé la méthode égale et peuvent être utilisées directementMaîtriser complètement la classe String de Java Les types de données de référence utilisent == pour comparer les adresses
L'image ci-dessous montre deux références pointant vers le même espace d'adressage, qui est lié au pool constant de chaînes
Maîtriser complètement la classe String de Java

L'image ci-dessous produit deux objets, deux espaces d'adressage, en utilisant == renvoie false

La taille de comparaison égale C'est un comparaison sensible à la casse


La méthode equalsIgnoreCase est une comparaison insensible à la casseMaîtriser complètement la classe String de Java

2. Pool de constantes de chaîne

1. Qu'est-ce qu'un pool de constantes de chaîne

Maîtriser complètement la classe String de Java
Lors de l'utilisation de la méthode d'affectation directe pour générer un objet de chaîne, la JVM maintiendra un pool de constantes de chaîne si l'objet ne le fait pas. existe dans le tas, un objet chaîne est généré et ajouté au pool de constantes de chaîne ; lorsque vous continuez à utiliser la méthode d'affectation directe pour générer un objet chaîne, la JVM constate que le contenu pointé par la référence existe déjà dans le pool de constantes ; Pour le moment, il n'est pas nécessaire de créer un nouvel objet chaîne, mais de réutiliser directement l'objet existant. C'est pourquoi les trois références dans l'image ci-dessus pointent vers la même adresse
Maîtriser complètement la classe String de Java
Lorsque l'objet est généré pour la première fois, dans le pool constant S'il n'y a rien, un objet chaîne est généré et stocké dans le pool constant. Lorsque l'objet est généré pour la deuxième et la troisième fois, la JVM constate que le même contenu existe déjà dans le pool constant, donc ce n'est pas le cas. longer génère un nouvel objet et pointe directement vers et Le même espace d'adressage que str1

Maîtriser complètement la classe String de Java
Le programme est exécuté de droite à gauche À ce stade, le côté droit de la première ligne de code est une constante de chaîne. , qui est également un objet chaîne, alors ouvrez-le d'abord dans le pool constant Un morceau d'espace, puis créez un nouvel objet chaîne et stockez-le. Le programme s'exécute à gauche et rencontre le nouveau mot-clé à ce moment-là. L'objet est créé et stocké dans le tas. Ensuite, str1 pointe vers l'objet dans le tas, puis pointe vers les deuxième et troisième lignes. Lors du codage, on constate que l'objet existe déjà dans le pool constant. Aucune nouvelle création n'est nécessaire. . Lorsque le nouveau mot-clé est rencontré, un nouvel objet est créé. Le diagramme de mémoire est le suivant :
Maîtriser complètement la classe String de Java

2 Méthode de saisie manuelle du pool

La méthode interne fournie par la classe String, c'est une méthode locale :
Maîtriser complètement la classe String de Java.
L'appel de la méthode interne enregistrera l'objet pointé par la référence de chaîne actuelle dans le pool de constantes de chaîne. Il existe deux situations :
1. Si l'objet existe déjà dans le pool de constantes actuel, il ne sera pas généré à nouveau. , renvoie l'objet String dans le pool de constantes
2. Si l'objet n'existe pas dans le pool de constantes actuel, ajoutez l'objet au pool et renvoyez l'adresse après être entré dans le pool.

1. Jetez un œil au résultat des lignes de code suivantes
Maîtriser complètement la classe String de Java
Parce que la méthode interne a une valeur de retour, str1 appelle uniquement la méthode interne à ce moment et ne reçoit pas la valeur de retour, donc str1 pointe toujours vers l'objet dans le tas, str2 Pointe vers l'objet dans le pool constant, donc il renvoie false
Maîtriser complètement la classe String de Java
Tant que vous recevez la valeur de retour de l'appel de la méthode interne, elle retournera true ; l'objet pointé par str1 est ajouté manuellement au pool, et le pool a déjà l'objet, laissez directement str1 pointer vers l'objet
Maîtriser complètement la classe String de Java
2. Regardez la sortie des lignes de code suivantes
Maîtriser complètement la classe String de Java
Lors de la saisie manuelle du piscine, il n'y a rien dans la piscine, alors déplacez-la directement dans la piscine constante
Maîtriser complètement la classe String de Java


3. L'immuabilité des chaînes

1. Pourquoi est-elle immuable

Remarque : la soi-disant immuabilité de la chaîne signifie que le contenu de la chaîne est immuable, et non que la référence de la chaîne ne peut pas être modifiée
Maîtriser complètement la classe String de Java
Ici. Immuable fait référence à "hello", "world", "helloworld", "!!!" et l'épissé "helloworld!!!" qui ont été créés comme objets de chaîne, ces objets ne peuvent pas être modifiés une fois déclarés. mais la référence peut être modifiée. Un moment, elle pointe vers bonjour, un autre moment, elle pointe vers bonjour monde, et maintenant elle pointe vers bonjour tout le monde ! ! ! , tout cela est possible
Maîtriser complètement la classe String de Java
Une chaîne n'est qu'un tableau de caractères -> char[], la chaîne est en fait stockée dans le tableau de caractères. Pourquoi le contenu de la chaîne ne peut-il pas être modifié ? Jetons un coup d'œil au code source de la chaîne et découvrons-le.
Maîtriser complètement la classe String de Java
Nous pouvons voir que le tableau de caractères à l'intérieur de String est encapsulé. Ce tableau de caractères n'est pas accessible depuis l'extérieur de la classe String, encore moins en modifiant le contenu de la chaîne
String str = " hello ";
Maîtriser complètement la classe String de Java

2 .Comment pour modifier le contenu de la chaîne

1. Détruisez l'encapsulation du tableau de valeurs par réflexion au moment de l'exécution
2. Remplacez la classe StringBuilder ou StringBuffer - - n'est plus du même type
a.StringBuilder : thread dangereux, performances élevées
b .StringBuffer : thread-safe, mauvaises performances
De plus, l'utilisation des deux classes est exactement la même

Si vous devez épisser des chaînes fréquemment, utilisez la méthode append de la classe StringBuilder. Un seul objet est généré ici, qui changera après un certain temps. Cela devient bonjour, et bientôt cela devient bonjour tout le monde
Maîtriser complètement la classe String de Java

3. Utilisation spécifique de la classe StringBuilder

La classe StringBuilder et String sont deux classes indépendantes qui ont été créées pour résoudre le problème de l'épissage des chaînes.
Classe StringBuilder et conversion String Mutual des classes :

1. StringBuilder peut être converti en classe String en appelant la méthode toString
Maîtriser complètement la classe String de Java

2. La classe String peut être convertie en classe StringBuilder, en utilisant le constructeur ou la méthode append de StringBuilder
. Maîtriser complètement la classe String de Java
Maîtriser complètement la classe String de Java
Autres méthodes courantes :
a. Opération d'inversion de chaîne, reverse() fournie par sb
Maîtriser complètement la classe String de Java

b Supprimer la plage de données spécifiée, delete(int start, int end); fin, gauche Intervalle ouvert droit fermé
Maîtriser complètement la classe String de Java

c. Opération d'insertion, insertion (int start, divers types de données) : insérer à partir de la position de l'index de départ, l'index de départ de l'insertion est start
Maîtriser complètement la classe String de Java

Apprentissage recommandé : " tutoriel vidéo Java

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer