[Java] Über String und StringBuilder

Zusammenfassung mit Mokuji

Es ist ein Memo für mich zum Lernen

Die Schlussfolgerung ist --StringBuilder wird beim Verbinden und Spiegeln empfohlen

Hintergrund

Vor kurzem studiere ich Java-Grammatik mit dem AtCoder-Problem.

ABC146 F -Sugoroku Es ist eine Geschichte, die beginnt, als ich auf etwas namens StringBuilder stieß, als ich String umkehren wollte, als ich darauf stieß.

Unterschied zwischen String und StringBuilder

Sie können dies leicht verstehen, indem Sie auf den Link unten schauen. https://qiita.com/shunsuke227ono/items/e8f34c67dcffa0fa28ad https://www.javadrive.jp/start/stringbuilder/

Kurz zusammengefasst

--String ist unveränderlich und StringBuilder ist veränderbar --String kann im Code auch als veränderlich beschrieben werden (S = S + "a" usw.) --StringBuilder ist speicher- und zeiteffizienter zum Hinzufügen und Einfügen von Zeichenfolgen

Es scheint also, dass die Verwendung von StringBuilder empfohlen wird, aber ** Ich habe auf der String-Seite keine Vorteile gesehen **, also? Ist es ein Kind, das String nicht braucht? (Wahrscheinlich nicht).

――― 2020/02/02 postscript ――― (Der Titel wurde ebenfalls geändert) Er wies in den Kommentaren darauf hin und führte ↓ gute Links ↓ ein. https://qiita.com/yoshi389111/items/67354ba33f9271ef2c68

Es scheint kein Problem mit dem Operator + zu geben, wenn Zeichenfolgenkonstanten oder eine Anweisung kombiniert werden. Wenn Sie die Zeichenfolge wie dieses Mal invertieren möchten, ist es besser, StringBuilder oder List \ zu verwenden.

Nachtrag 2 (27.03.2020)

Hinzugefügt, weil ich auf ein anderes Problem und Wissen gestoßen bin

ABC159 B - String Palindrome Beurteilung, ob die Zeichenkette ein Kreis ist (+ α). Ich habe den Code mit der Idee geschrieben, ob ein StringBuilder und seine invertierte Version identisch sind.

Rundschreiben-Code (falsch)


static boolean checkKaibun(String str){
  StringBuilder t = new StringBuilder(str);
  return (t.equals(t.reverse()));
}

Dies ist immer wahr, soweit ich es selbst versucht habe. Die Ursache ist, dass die Methode StringBuilder equals nicht überschrieben wurde.

Die Lösung ist

  1. Überschreiben Sie die Methode equals
  2. Mit toString in String konvertieren und dann vergleichen

Wenn Sie viele StringBuilder-Vergleiche in Ihrem Code verwenden, wäre dies 1, aber es scheint, dass Sie auch die hashCode-Methode überschreiben müssen (siehe unten), was ärgerlich ist.

Referenz https://www.atmarkit.co.jp/ait/articles/0702/20/news103.html

Die Implementierung in 2 ist wie folgt.

Rundschreiben Code


static boolean checkKaibun(String str){
  StringBuilder t = new StringBuilder(str);
  return (str.equals(t.reverse().toString()));
}

Recommended Posts

[Java] Über String und StringBuilder
Informationen zur Java StringBuilder-Klasse
[Java] Vergleich von Zeichenketten und && und ||
Informationen zur Java String-Klasse
[Java] Der verwirrende Teil von String und StringBuilder
Über Java-Paket und Import
Java-Zeichenfolge
[Java] Über Objects.equals () und Überprüfung des String-Vergleichs (== und gleich)
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
Informationen zu statischen und nicht statischen Java-Methoden
Über Biocontainer fastqc und Java
[Java-Anfänger] Über Abstraktion und Schnittstelle
StringBuffer- und StringBuilder-Klasse in Java
Informationen zu primitiven Java-Typen und Referenztypen
Java 8 studieren (String Joiner und Join)
Dies und das über Base64 (Java)
[Java] Unterschied zwischen StringBuffer und StringBuilder
Über die Java-Schnittstelle
[Java] Über Arrays
[Java] Auffüllen von Zeichenfolgen
Etwas über Java
Wo ist mit Java?
Informationen zu Java-Funktionen
Über Java-Threads
[Java] -Schnittstelle
[Über JDBC, das Java und SQL verbindet]
Java-String-Verarbeitung
Über die Java-Klasse
Informationen zur Beziehung zwischen dem Java String Equality Operator (==) und der Initialisierung. Anfänger
[Java] Vergleich von Sammlungs- und StringBuilder-Operationsmethoden
Java und JavaScript
Informationen zu Java-Arrays
XXE und Java
Über Java-Vererbung
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Über Schnittstelle, Java-Schnittstelle
Geteilter String (Java)
Über Java Var
Über Java Literal
Informationen zu Java-Befehlen
Unerwartet unbekannte grundlegende Tipps zu StringBuilder [Java / C #]
Informationen zur Java-Protokollausgabe
Informationen zur Java-Funktionsschnittstelle
Java, über zweidimensionales Array
Informationen zur StringBuilder-Klasse
Über die Klassenteilung (Java)
Über [Java] [StreamAPI] allMatch ()
Getter und Setter (Java)
[Java] Thread und ausführbar
String und Stringbuffer und String Builder
Java wahr und falsch
[Java] Über Singleton Class
String-Literale und Instanzen
Über Klassen und Instanzen
Mehrfacher Ersatz für Java-Zeichenfolgen
[Java] Über anonyme Klassen
Informationen zu Aufteilungsmethoden (Java)
Über bekommt und bekommt.chomp
[Java Silver] Informationen zur Initialisierung
Informationen zur Java-Array-Liste