Für diejenigen, die gerade mit dem Programmieren einschließlich der Java-Sprache begonnen haben, und für diejenigen, die es bereits gelernt haben, zur Überprüfung Dieses Mal schreibe ich, um zu erfahren, wie man Strings manipuliert.
Diese Klasse wird als Datentyp bereitgestellt, in dem mehrere Zeichen gespeichert werden können. (Klasse, die Zeichenfolgen verarbeitet)
Sie werden oft eine Zeichenfolge sehen, die in "" "eingeschlossen und einer Variablen zugewiesen ist.
python
String msg = "Hello World!!!";
System.out.println(msg); // Hello World!!!
Sie können auch einen neuen String schreiben und ihn explizit einer Variablen zuweisen. Sie können ein Array vom Typ char auch in einen String vom Typ String umwandeln.
python
String banana = new String("Banane");
System.out.println(banana); //Banane
//Sie können ein Array vom Typ char übergeben
String tomato;
char[] chars = {'Zu', 'Ma', 'Zu'};
tomato = new String(chars);
System.out.println(tomato); //Tomate
Wenn Sie in der String-Klasse einer initialisierten String-Typvariablen eine andere Zeichenfolge zuweisen, wird die ursprüngliche Zeichenfolge nicht neu geschrieben. ** Da es sich um ein unveränderliches Objekt handelt, weist es die Eigenschaft auf, dass sich das Referenzziel geändert hat (ein neuer Bereich wurde gesichert).
Vergleichen Sie es mit einem Array desselben Referenztyps (veränderlich).
python
//Unveränderliches Beispiel
String a = "Ah";
String b = a;
a = "ich";
System.out.println(a); //ich
System.out.println(b); //Ah
//Beispiel für veränderbare (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
}
Es gibt viele Methoden, die von der String-Klasse bereitgestellt werden.
Die Syntax lautet String type variable name.Method name ();
.
Ich werde einige vorstellen.
charAt
Diese Methode gibt den Zeichentyp an dem durch das Argument angegebenen Index zurück. Wenn das Argument negativ ist und gleich oder größer als die Länge der Zeichenfolge ist, wird eine Ausnahme ausgelöst.
python
String name = "Keisuke Honda";
System.out.println(name.charAt(3)); //Ke
//Das Folgende löst eine Ausnahme aus
System.out.println(name.charAt(7)); //Ausnahme tritt auf
System.out.println(name.charAt(10)); //Ausnahme tritt auf
concat
Diese Methode verkettet die angegebene Zeichenfolge am Ende.
python
String greet = "Guten Morgen";
System.out.println(greet.concat("Es gibt.")); // おはようEs gibt.
equals
Eine Methode, die eine Zeichenfolge mit dem durch das Argument angegebenen Objekt vergleicht und einen Booleschen Wert zurückgibt.
python
String name = "Keisuke Honda";
System.out.println(name.equals("Kleine Honda")); // false
System.out.println(name.equals("Keisuke Honda")); // true
indexOf
Diese Methode gibt den Index der Position zurück, an der das Argumentzeichen zuerst angezeigt wird. Gibt -1 zurück, wenn das entsprechende Zeichen nicht in der Zeichenfolge enthalten ist.
python
String str = "banana";
System.out.println(str.indexOf('a')); // 1
System.out.println(str.indexOf('z')); // -1
length
Eine Methode, die die Länge einer Zeichenfolge zurückgibt.
python
String name = "James Harden";
System.out.println(name.length()); // 10
replace
Diese Methode ersetzt das Zeichen des ersten Arguments durch das durch das zweite Argument angegebene Zeichen und gibt die resultierende Zeichenfolge zurück.
python
String name = "Bobobo-bo Bo-bobo";
System.out.println(name.replace("Bo", "Ba")); // BaBaBaーBa・BaーBaBa
isEmpty
Diese Methode gibt nur dann true zurück, wenn length () 0 ist.
python
String teruma = "Ich bin hier";
System.out.println(teruma.isEmpty()); // false
String none = "";
System.out.println(none.isEmpty()); // true
Da es zu viele Methoden gibt, um alle einzuführen, sind die anderen Methoden Oracle String class. Bitte beziehen Sie sich auf lang / String.html).
Diese Klasse behandelt Zeichenfolgen genauso wie die Zeichenfolgenklasse. Es ist möglich, die in der Variablen gespeicherte Zeichenfolge zu ändern. (Die ursprüngliche Zeichenfolge kann neu geschrieben werden.) Weil die StringBuilder-Klasse ein ** veränderbares Objekt ** ist.
Verwenden Sie zum Erstellen einer Zeichenfolge vom Typ StringBuilder das Schlüsselwort "new", wie Sie es beim Erstellen des Arrays getan haben.
python
StringBuilder sb = new StringBuilder("Hello World!!!");
System.out.println(sb); // Hello World!!!
Der Versuch, direkt wie die String-Klasse zuzuweisen, führt zu einem Fehler.
Error
StringBuilder name = "Tanaka"; // Type mismatch: cannot convert from String to StringBuilder
Die StringBuilder-Klasse bietet viele Methoden. Die Syntax lautet "StringBuilder-Typvariable name.method name ();" wie die String-Klasse.
Ich werde einige vorstellen.
append
Diese Methode fügt die durch das Argument angegebene Zeichenfolge zur aktuellen Zeichenfolge hinzu.
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
Diese Methode fügt die durch das Argument angegebene Zeichenfolge vor dem Zeichen an der durch das Argument angegebenen Position ein.
python
StringBuilder member = new StringBuilder("Yanagisawa, Band");
member.insert(3, "Tamada..."); //Weil es 3 ist,"rollen"Die Einfügeposition liegt vor
System.out.println(member); //Yanagisawa, Tamada...rollen
delete
Diese Methode löscht die Zeichen an der Position vom ersten Argument bis zur Position unmittelbar vor der Position des zweiten Arguments.
python
StringBuilder member = new StringBuilder("Wolke, Aeris, Tifa, Barrett");
member.delete(5, 10); //Da die Startposition 5, "D" und die Endposition 10, "," ist.
System.out.println(member); //Wolke, Tifa, Barrett
replace
Diese Methode ersetzt die Zeichen an der Position unmittelbar vor der Position des ersten Arguments durch die Position des zweiten Arguments durch die durch das dritte Argument angegebene Zeichenfolge.
python
StringBuilder sb = new StringBuilder("Dufufufu!!");
sb.replace(2, 5, "Lalala"); // 開始位置2なので「フ」から、終了位置5なので「フ」までの文字列を第三引数の文字「Lalala」に置換する
System.out.println(sb); //Durarara!!
substring
Diese Methode gibt einen Teilstring von der durch das Argument angegebenen Position bis zum Ende zurück.
python
StringBuilder oosako = new StringBuilder("Es ist nicht seltsam");
//Gibt die Zeichenfolge vom zweiten Index bis zum Ende zurück
System.out.println(oosako.substring(2)); //Es ist nicht seltsam
Da die StringBuilder-Klasse auch eine große Anzahl von Methoden enthält, können wir nicht alle einführen. Die anderen Methoden sind die StringBuilder-Klasse von Oracle. Bitte beziehen Sie sich auf java / lang / StringBuilder.html).
Es stellt sich heraus, dass es mehrere Möglichkeiten gibt, Zeichenfolgen zu kombinieren.
Plus-Betreiber
String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!
String class concat method
String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!
Methode der StringBuilder-Klasse anhängen
StringBuilder sb = new StringBuilder("Hello");
StringBuilder greet3 = sb.append("World!!!");
System.out.println(greet3); // HelloWorld!!!
Das Ausgabeergebnis ist das gleiche, aber der Prozess bis zu diesem Punkt ist unterschiedlich.
Vergleichen wir nun jede Variable mit dem Operator ==. Da das Ausgabeergebnis das gleiche ist, dachte ich, dass es wahr wäre,
python
//Plus-Betreiber
String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!
//String class concat method
String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!
System.out.println(greet == greet2); // false
Die Zeichenfolge ** HelloWorld !!! ** ist dieselbe, aber falsch. Beim Vergleichen von Referenztypen mit dem Operator `== wird dieses Ergebnis erhalten, da die Referenzziele verglichen werden, um festzustellen, ob sie identisch sind. ``
Das Vergleichsergebnis ändert sich auch in Abhängigkeit von der Methode zum Deklarieren der Zeichenfolge.
** Wenn Sie eine Zeichenfolge mit new String () ** erstellen, wird diese Zeichenfolge immer im neuen Bereich generiert. Wenn andernfalls dieselbe Zeichenfolge bereits vorhanden ist, bezieht sie sich auf die vorhandene Zeichenfolge. Daher ist das Ergebnis beim Vergleich mit dem Operator "==" wie folgt.
python
String str1 = "Yamada";
String str2 = new String("Yamada");
String str3 = "Yamada";
System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // true
Wenn Sie Zeichenfolgen in der String-Klasse vergleichen möchten, verwenden Sie zum Vergleichen die Methode "equals".
python
//Plus-Betreiber
String str1 = "Hello";
String str2 = "World!!!";
String greet = str1 + str2;
System.out.println(greet); // HelloWorld!!!
//String class concat method
String str = "Hello";
String greet2 = str.concat("World!!!");
System.out.println(greet2); // HelloWorld!!!
//Ich vergleiche Zeichenfolgen innerhalb von Variablen und nicht Referenzen
System.out.println(greet.equals(greet2)); // true
StringBuilder schreibt übrigens die vorhandene Zeichenfolge neu Der Vergleich der Variablen sb mit der Variablen greet3 gibt true zurück.
python
StringBuilder sb = new StringBuilder("Hello");
StringBuilder greet3 = sb.append("World!!!");
System.out.println(greet3); // HelloWorld!!!
System.out.println(sb == greet3); // true
Sie haben die Klassen String und StringBuilder für die Arbeit mit Zeichenfolgen kennengelernt.
Beim Vergleichen von Zeichenfolgen müssen Sie darauf achten, nichts Unbeabsichtigtes zu tun. Ich möchte auch in der Lage sein, die Methoden jeder Klasse zu verstehen und zu handhaben, die ich in diesem Artikel nicht vorstellen konnte.
** Oracle String Class ** ** Oracle StringBuilder-Klasse ** ** Vergleich von Zeichenketten und Zeichenketten **
Recommended Posts