[Einführung in Java] Umgang mit Zeichenfolgen (String-Klasse, StringBuilder-Klasse)

Zweck

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.

[Einführung in Java]

Was ist die String-Klasse?

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
}

Einführung in die String-Klassenmethode

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).

Was ist die StringBuilder-Klasse?

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

Einführung in die StringBuilder-Klassenmethode

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).

Zusammenfassung zum Kombinieren von Zeichenfolgen

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.

Vorsichtsmaßnahmen für den Zeichenfolgenvergleich

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

Am Ende

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.

Referenzseite

** Oracle String Class ** ** Oracle StringBuilder-Klasse ** ** Vergleich von Zeichenketten und Zeichenketten **

Recommended Posts

[Einführung in Java] Umgang mit Zeichenfolgen (String-Klasse, StringBuilder-Klasse)
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
[java] Zusammenfassung des Umgangs mit Zeichenketten
Verschiedene Methoden der Java String Klasse
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ausgabe des Buches "Einführung in Java"
[Java] Einführung in Java
[Java-Anfänger] Konvertierung von Zeichenfolge in numerischen Wert - Was ist die parseInt-Methode der Integer-Klasse? ~
[Java] So verwenden Sie Teilzeichenfolgen, um einen Teil einer Zeichenfolge auszuschneiden
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
[Java] Der verwirrende Teil von String und StringBuilder
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
Informationen zur Java StringBuilder-Klasse
Informationen zur Java String-Klasse
Einführung in den Java-Befehl
[Java] Konvertieren Sie Zeichenfolgen in Groß- / Kleinschreibung (AOJ⑨ - Swap in Groß- / Kleinschreibung)
[Java] So schneiden Sie eine Zeichenfolge zeichenweise aus
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
Informationen zur Konvertierung von Zeichenfolgen in Java in voller Breite und halber Breite
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
Grundlagen der Zeichenoperation (Java)
Java unflexibler String-Klassen-Teilstring
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
[Java] Einführung in den Lambda-Ausdruck
[Java] Über String und StringBuilder
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
Zusammenfassung der Java Math Klasse
[Java] Einführung in die Stream-API
[Einführung in Janken (ähnliche) Spiele] Java
Zeichenfolgen zeichenweise anzeigen [Hinweis]
[Rails] So lassen Sie die Anzeige der Zeichenfolge der link_to-Methode weg
[Rails] So lassen Sie die Anzeige der Zeichenfolge der link_to-Methode weg
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
[Einführung in Java] Informationen zur Ausnahmebehandlung (try-catch-finally, aktivierte Ausnahme, nicht aktivierte Ausnahme, Würfe, Würfe)
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
[Einführung in Java] Über Lambda-Ausdrücke
[Einführung in Java] Informationen zur Stream-API
Kotlin-Klasse zum Senden an Java-Entwickler
Einführung in die funktionale Programmierung (Java, Javascript)
[Java] Geben Sie in stdin of Process ein
[Java] Entfernen Sie Leerzeichen in Zeichenfolgen
StringBuffer- und StringBuilder-Klasse in Java
So dekompilieren Sie eine Java-Klassendatei
Verschiedene Methoden der String-Klasse
[Hinweis] Behandlung von Java-Dezimalstellen
Erste Einführung in Mac (Java-Ingenieur)
Von der Einführung bis zur Verwendung von byebug
[Algorithmus] Absteigende Reihenfolge der Zeichenketten
[Java] Korrekter Vergleich des String-Typs
Schrittweises Verständnis der Behandlung von Java-Ausnahmen
[Java] Verwendung der Math-Klasse
So verketten Sie Zeichenfolgen mit Java