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 **.
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
}
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).
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
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).
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.
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
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.
** Classe de chaîne Oracle ** ** Classe Oracle StringBuilder ** ** Comparaison des chaînes de caractères et des chaînes de caractères **
Recommended Posts