Comment utiliser la classe String de Java
1. Comprendre String
1. String dans le JDK
Tout d'abord, jetons un coup d'œil au code source de la classe String dans le JDK. Vous pouvez voir que la classe String est finalement modifiée. , ce qui signifie que la classe String ne peut pas être héritée. String n'a pas de sous-classes. De cette façon, tous ceux qui utilisent JDK utilisent la même classe String. Si String peut être hérité, tout le monde peut étendre String et la chaîne utilisée par. tout le monde n'est pas Dans la même version, deux personnes différentes utilisent la même méthode et affichent des résultats différents, ce qui rend impossible le développement du code. L'héritage et le remplacement de méthode apportent non seulement de la flexibilité, mais apportent également de nombreuses sous-classes. 2. Quatre façons de créer une chaîne
Première méthode : affectation directe (couramment utilisée)
String str = " bonjour mot "
Deuxième méthode : générer des objets via la méthode de construction
Méthode 3 : générer un objet via un tableau de caractères
Méthode 4 : via une méthode statique de chaîne valueOf (n'importe quelle type de données) = > Convertir en chaîne (couramment utilisé)
3 Littéral de chaîne
Literal : valeur directement écrite C'est ce qu'on appelle littéral
10 - > 10.1 ---> double littéral true --> littéral booléen
" abc " - > Littéral de chaîne
Le littéral d'une chaîne est en fait un objet de chaîne
String str = « bonjour mot » ;
À l'heure actuelle, il s'agit à la fois d'une chaîne littérale et d'un objet chaîne. Afin de faciliter la compréhension, faites un dessin. À ce stade, pour faciliter la compréhension, nous pensons d'abord qu'il est stocké sur le tas, mais en fait. il est stocké dans la zone de méthode. Si str2 = "Hello" à ce moment, cela n'affectera pas la sortie de str, car Hello entouré de " " est également un objet chaîne, indiquant qu'un nouvel espace a été ouvert sur. le tas à ce moment-là, et str2 enregistre l'espace d'adressage du nouvel objet à ce moment, ce qui n'a aucun effet sur str
4 La comparaison de chaînes est égaleTous les types de données de référence sont comparés lorsqu'ils sont égaux, utilisez la méthode égale pour comparer. Les classes couramment utilisées dans le JDK ont remplacé la méthode égale. Vous pouvez l'utiliser directement
Le type de données de référence utilise == pour comparer les adresses
L'image ci-dessous montre deux références pointant vers le même espace d'adressage. est lié au pool constant de chaînes
La figure ci-dessous génère deux objets et deux espaces d'adressage. L'utilisation de == renvoie false
La taille de comparaison d'égal à égal est une comparaison sensible à la casse La méthode equalsIgnoreCase n'est pas Case. -comparaison sensible
2. Pool de constantes de chaîne1. Qu'est-ce qu'un pool de constantes de chaîne ? Un pool de constantes de chaîne sera maintenu si l'objet n'existe pas dans le tas, un objet chaîne sera généré et ajouté. le pool de constantes de chaîne ; lorsque la méthode d'affectation directe est utilisée pour générer un objet chaîne, la JVM trouve la référence. Le contenu pointé existe déjà dans le pool de constantes. À ce stade, il n'est pas nécessaire de créer un nouvel objet chaîne. mais réutilisez directement l'objet existant. C'est pourquoi les trois références dans l'image ci-dessus pointent vers la même adresse
Lorsque Lorsque l'objet est généré pour la première fois, il n'y a rien dans le pool constant, donc 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. Elle ne générera plus de nouveaux objets et pointera directement vers le même espace d'adressage que str1.
Le programme est exécuté de droite à gauche. À ce stade, le côté droit de la première ligne de code est une constante chaîne, qui est également un objet chaîne, alors ouvrez d'abord un espace dans le pool de constantes, puis créez une nouvelle chaîne. L'objet est stocké et le programme est exécuté vers la gauche. Lorsque le nouveau mot-clé est rencontré, un nouvel objet est créé et stocké dans le tas. Ensuite, str1 pointe vers l'objet dans le tas. aux deuxième et troisième lignes de code, on constate que le pool constant a été Si l'objet existe, il ne sera plus créé Lorsque le nouveau mot-clé est rencontré, un nouvel objet sera créé. :
2. Méthode de pooling manuel
La méthode interne fournie par la classe String, il s'agit d'une méthode locale :
Appel 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 constant actuel, aucun nouvel objet ne sera généré et renvoyé dans l'objet String
2. Si l'objet n'existe pas dans le pool constant 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
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
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
2. Regardez la sortie des lignes de code suivantes
Lors de la saisie manuelle du pool, il n'y a rien dans le pool, alors déplacez-le directement dans le pool constant 3. Immuabilité des chaînes
1 Pourquoi est-il immuableRemarque : la soi-disant immuabilité des chaînes fait référence à l'immuabilité. du contenu de la chaîne, non pas que la référence de la chaîne ne puisse pas être modifiée
À quoi l'immuabilité fait référence ici. Ils sont "hello", "world", "helloworld", "!!!", et l'épissé "helloworld !!!" Ce sont des objets chaîne créés. Une fois ces objets déclarés, leur contenu ne peut pas être modifié, mais la référence peut être modifiée à un moment donné, à un autre moment, elle pointe vers helloworld, et maintenant elle pointe vers helloworld. à bonjour le monde ! ! ! , tout cela est possible
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.
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 ";
2 .Comment pour modifier le contenu de la chaîne
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
3. Utilisation spécifique de la classe StringBuilder
Classe StringBuilder et conversion String Mutual des classes :
1. StringBuilder peut être converti en classe String en appelant la méthode toString
2. La classe String peut être convertie en classe StringBuilder, en utilisant le constructeur ou la méthode append de StringBuilder .
Autres méthodes couramment utilisées :
a. Opération d'inversion de chaîne, reverse() fournie par sb;
b. Supprimez la plage de données spécifiée, supprimez (int start, int end); supprimez tout le contenu du début à la fin, fermé à gauche et ouvert à droite
c. , chaque type de données) : Commencez l'insertion à partir de la position de l'index de départ, et l'index de départ de l'insertion est start
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
