[Introduction à Java] Gestion des chaînes de caractères (classe String, classe StringBuilder)

Objectif

Pour ceux qui viennent de commencer à apprendre la programmation, y compris le langage Java, et ceux qui l'ont déjà appris, pour examen Cette fois, j'écris pour en savoir plus sur la ** manipulation des chaînes **.

[Introduction à Java]

Qu'est-ce que la classe String?

Cette classe est fournie sous forme de type de données pouvant stocker plusieurs caractères. (Classe qui gère les chaînes de caractères)

Vous verrez souvent une chaîne entre "" "et assignée à une variable.

python


String msg = "Hello World!!!";
System.out.println(msg); // Hello World!!!

Vous pouvez également l'affecter explicitement à une variable en écrivant new String. Vous pouvez également transformer un tableau de type char en une chaîne de type String.

python


String banana = new String("banane");
System.out.println(banana); //banane

//Vous pouvez passer un tableau de type char
String tomato;
char[] chars = {'À', 'Ma', 'À'};
tomato = new String(chars);
System.out.println(tomato); //Tomate

Dans la classe String, si vous réaffectez une chaîne différente à une variable de type String initialisée, la chaîne d'origine ne sera pas réécrite. Puisqu'il s'agit d'un objet immuable, il a pour caractéristique que la destination de référence a changé (une nouvelle zone a été sécurisée).

Comparez-le avec un tableau du même type de référence (mutable).

python


//Exemple immuable
String a = "Ah";
String b = a;
a = "je";
System.out.println(a); //je
System.out.println(b); //Ah

//Exemple de mutable (variable)
int[] x = {1, 2, 3};
int[] y = x;
x[0] = 100;

for (int xVal : x) {
  System.out.print(xVal + " "); // 100 2 3
}

for (int yVal : y) {
  System.out.print(yVal + " "); // 100 2 3
}

Introduction à la méthode de classe String

Il existe de nombreuses méthodes fournies par la classe String. La syntaxe est Nom de la variable de type chaîne Nom de la méthode ();.

Je vais en présenter quelques-uns.

charAt

Cette méthode renvoie le type char à l'index spécifié par l'argument. Si l'argument est négatif et est égal ou supérieur à la longueur de la chaîne, une exception sera déclenchée.

python


String name = "Keisuke Honda";
System.out.println(name.charAt(3)); //Ke

//Ce qui suit soulève une exception
System.out.println(name.charAt(7)); //Une exception se produit
System.out.println(name.charAt(10)); //Une exception se produit

concat

Cette méthode concatène la chaîne spécifiée à la fin.

python


String greet = "Bonjour";
System.out.println(greet.concat("Il y a.")); // おはようIl y a.

equals

Méthode qui compare une chaîne à l'objet spécifié par l'argument et renvoie un booléen.

python


String name = "Keisuke Honda";
System.out.println(name.equals("Petite Honda")); // false
System.out.println(name.equals("Keisuke Honda")); // true

indexOf

Cette méthode renvoie l'index de la position où le caractère d'argument apparaît en premier. Renvoie -1 si le caractère n'est pas dans la chaîne.

python


String str = "banana";
System.out.println(str.indexOf('a')); // 1
System.out.println(str.indexOf('z')); // -1

length

Une méthode qui renvoie la longueur d'une chaîne.

python


String name = "James Harden";
System.out.println(name.length()); // 10

replace

Cette méthode remplace le caractère du premier argument par le caractère spécifié par le deuxième argument et renvoie la chaîne de caractères résultante.

python


String name = "Bobobo-bo Bo-bobo";
System.out.println(name.replace("Bo", "Ba")); // BaBaBaーBa・BaーBaBa

isEmpty

Cette méthode renvoie true uniquement lorsque length () est égal à 0.

python


String teruma = "Je suis là";
System.out.println(teruma.isEmpty()); // false
String none = "";
System.out.println(none.isEmpty()); // true

Comme il y a trop de méthodes pour toutes les introduire, les autres méthodes sont [Oracle String class](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/ Veuillez vous référer à lang / String.html).

Qu'est-ce que la classe StringBuilder?

Cette classe gère les chaînes de la même manière que la classe String. Il est possible de modifier la chaîne de caractères stockée dans la variable. (La chaîne de caractères d'origine peut être réécrite) Parce que la classe StringBuilder est un ** objet mutable **.

Pour créer une chaîne de type StringBuilder, utilisez le nouveau mot-clé comme vous l'avez fait lors de la création du tableau.

python


StringBuilder sb = new StringBuilder("Hello World!!!");
System.out.println(sb); // Hello World!!!

Tenter d'affecter directement comme la classe String entraînera une erreur.

Erreur


StringBuilder name = "Tanaka"; // Type mismatch: cannot convert from String to StringBuilder

Introduction à la méthode de classe StringBuilder

Il existe de nombreuses méthodes fournies par la classe StringBuilder. La syntaxe est «Nom de la variable de type StringBuilder.Nom de la méthode ();» comme la classe String.

Je vais en présenter quelques-uns.

append

Cette méthode ajoute la chaîne de caractères spécifiée par l'argument à la chaîne de caractères actuelle.

python


StringBuilder name = new StringBuilder("Tanaka");
System.out.println(name); //Tanaka
name.append("Marx");
System.out.println(name); //Tanaka Marx
name.append("Toriou");
System.out.println(name); //Tanaka Marx Toriou

insert

Cette méthode insère la chaîne de caractères spécifiée par l'argument avant le caractère à la position spécifiée par l'argument.

python


StringBuilder member = new StringBuilder("Yanagisawa, Volume");
member.insert(3, "Tamada..."); //Parce que c'est 3,"rouleau"La position d'insertion est devant
System.out.println(member); //Yanagisawa, Tamada...rouleau

delete

Cette méthode supprime les caractères à la position immédiatement avant la position du premier argument au deuxième argument.

python


StringBuilder member = new StringBuilder("Nuage, Aeris, Tifa, Barrett");
member.delete(5, 10); //Puisque la position de départ est 5, "D", et la position finale est 10, ","
System.out.println(member); //Nuage, Tifa, Barrett

replace

Cette méthode remplace les caractères de la position immédiatement avant la position du premier argument par la position du deuxième argument par la chaîne de caractères spécifiée par le troisième argument.

python


StringBuilder sb = new StringBuilder("Dufufufu!!");
sb.replace(2, 5, "Lalala"); // 開始位置2なので「フ」から、終了位置5なので「フ」までの文字列を第三引数の文字「Lalala」に置換する
System.out.println(sb); //Durarara!!

substring

Cette méthode renvoie une sous-chaîne de la position spécifiée par l'argument jusqu'à la fin.

python


StringBuilder oosako = new StringBuilder("Ce n’est pas étrange");

//Renvoie la chaîne du deuxième index à la fin
System.out.println(oosako.substring(2)); //Ce n’est pas étrange

La classe StringBuilder ayant également un grand nombre de méthodes, nous ne pouvons pas toutes les introduire, donc les autres méthodes sont [la classe StringBuilder d'Oracle](https://docs.oracle.com/javase/jp/11/docs/api/java.base/ Veuillez vous référer à java / lang / StringBuilder.html).

Résumé de la façon de combiner des chaînes

Il s'avère qu'il existe plusieurs façons de combiner des chaînes.

Opérateur Plus


String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!

Méthode de concat de classe String


String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!

Append, méthode de la classe StringBuilder


StringBuilder sb = new StringBuilder("Hello");
StringBuilder greet3 = sb.append("World!!!");
System.out.println(greet3); // HelloWorld!!!

Le résultat de sortie est le même, mais le processus jusqu'à ce point est différent.

Précautions pour la comparaison de chaînes de caractères

Maintenant, comparons chaque variable en utilisant l'opérateur ==. Puisque le résultat de sortie est le même, j'ai pensé que ce serait vrai,

python


//Opérateur Plus
String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!

//Méthode de concat de classe String
String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!

System.out.println(greet == greet2); // false

La chaîne ** HelloWorld !!! ** est la même, mais fausse. Lorsque vous comparez des types de référence à l'aide de l'opérateur `==, c'est le résultat car les références sont comparées pour voir si elles sont identiques. ''

Le résultat de la comparaison change également en fonction de la méthode de déclaration de la chaîne de caractères.

** Si vous créez une chaîne avec une nouvelle chaîne () **, cette chaîne sera toujours générée dans la nouvelle zone. Sinon, si la même chaîne existe déjà, elle fait référence à la chaîne existante. Par conséquent, lors de la comparaison avec l'opérateur «==», le résultat est le suivant.

python


String str1 = "Yamada";
String str2 = new String("Yamada");
String str3 = "Yamada";

System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // true

Si vous souhaitez comparer des chaînes de la classe String, utilisez la méthode «equals» pour comparer.

python


//Opérateur Plus
String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!

//Méthode de concat de classe String
String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!

//Je compare des chaînes à l'intérieur de variables, je ne compare pas les références
System.out.println(greet.equals(greet2)); // true

À propos, StringBuilder réécrit la chaîne de caractères existante, donc La comparaison de la variable sb avec la variable greet3 renvoie true.

python


StringBuilder sb = new StringBuilder("Hello");
StringBuilder greet3 = sb.append("World!!!");
System.out.println(greet3); // HelloWorld!!!

System.out.println(sb == greet3); // true

À la fin

Vous avez découvert les classes String et StringBuilder pour travailler avec des chaînes.

Lorsque vous comparez des chaînes, vous devez faire attention à ne rien faire involontairement. Je veux aussi pouvoir comprendre et gérer les méthodes de chaque classe que je n'ai pas pu présenter dans cet article.

Site de référence

** Classe de chaîne Oracle ** ** Classe Oracle StringBuilder ** ** Comparaison des chaînes de caractères et des chaînes de caractères **

Recommended Posts

[Introduction à Java] Gestion des chaînes de caractères (classe String, classe StringBuilder)
[Java] Gestion des chaînes de caractères (classe String et classe StringBuilder)
[java] Résumé de la gestion des chaînes de caractères
Diverses méthodes de la classe Java String
J'ai essayé de résumer les méthodes de Java String et StringBuilder
Sortie du livre "Introduction à Java"
[Java] Introduction à Java
[Java débutant] Conversion d'une chaîne de caractères en valeur numérique - Quelle est la méthode parseInt de la classe Integer? ~
[Java] Comment utiliser une sous-chaîne pour découper une partie d'une chaîne de caractères
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
[Java] La partie déroutante de String et StringBuilder
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
À propos de la classe Java StringBuilder
À propos de la classe Java String
Introduction à la commande java
[Java] Convertit les chaînes de caractères en majuscules / minuscules (AOJ⑨ --swap majuscules / minuscules)
[Java] Comment découper une chaîne de caractères caractère par caractère
Introduction à Java pour les débutants Connaissance de base du langage Java ①
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
À propos de la conversion pleine largeur ⇔ demi-largeur des chaînes de caractères en Java
[Java] Pratique de la gestion des exceptions [Exception]
Principes de base de l'utilisation des caractères (Java)
Sous-chaîne de classe Java inflexible String
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières
Comment utiliser la classe Java
[Java] Comparateur de la classe Collection
[Java] Introduction à l'expression lambda
[Java] À propos de String et StringBuilder
Initialisation avec une chaîne vide vers une instance de type Java String
Résumé de la classe Java Math
[Java] Introduction à l'API Stream
[Introduction aux jeux Janken (comme)] Java
Afficher les chaînes de caractères caractère par caractère [Note]
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to
Convertir un tableau de chaînes en une liste d'entiers en Java
[Introduction à Java] À propos de la gestion des exceptions (try-catch-finally, exception vérifiée, exception non vérifiée, throws, throw)
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
[Java] Comparaison de vitesse de combinaison de chaînes
[Introduction à Java] À propos des expressions lambda
[Introduction à Java] À propos de l'API Stream
Classe Kotlin à envoyer aux développeurs Java
Introduction à la programmation fonctionnelle (Java, Javascript)
[Java] Entrez dans le stdin du processus
[Java] Supprimer les espaces dans les chaînes de caractères
Classe StringBuffer et StringBuilder en Java
Comment décompiler un fichier de classe Java
Diverses méthodes de la classe String
[Note] Gestion des points décimaux Java
Introduction initiale à Mac (ingénieur Java)
De l'introduction à l'utilisation de byebug
[Algorithme] Ordre décroissant des chaînes de caractères
[Java] Comparaison correcte du type String
Compréhension étape par étape de la gestion des exceptions Java
[Java] Comment utiliser la classe Math
Comment concaténer des chaînes avec Java