1. Strings wijzigen

In Java zijn strings onveranderlijke objecten. Dit is gedaan om de String-klasse zeer geoptimaliseerd te maken en ervoor te zorgen dat deze overal kan worden gebruikt. Alleen onveranderlijke typen worden bijvoorbeeld aanbevolen voor gebruik als sleutels in de HashMap-verzameling .

Er doen zich echter vaak situaties voor waarin programmeurs het handiger vinden als de Stringklasse veranderlijk is. Ze willen een klasse die niet elke keer dat een van zijn methoden wordt aangeroepen een nieuwe subtekenreeks maakt.

Stel dat we een heel grote string hebben en dat we er regelmatig iets aan moeten toevoegen. In dit geval kan zelfs een verzameling tekens ( ArrayList<Character>) efficiënter zijn dan het constant opnieuw maken en samenvoegen van String-objecten.

Dat is precies de reden waarom een ​​String-achtig type dat kan worden gewijzigd, aan de Java-taal is toegevoegd. Het wordt genoemd StringBuilder.

Een voorwerp maken

Om een StringBuilder​​object te maken op basis van een bestaande string, moet u een instructie uitvoeren zoals:

StringBuilder name = new StringBuilder(string);

Om een ​​lege veranderlijke tekenreeks te maken, moet u een instructie als deze gebruiken:

StringBuilder name = new StringBuilder();

Lijst met methoden

De StringBuilderklas heeft twee dozijn nuttige methoden. Dit zijn de belangrijkste:

Methode Beschrijving
StringBuilder append(obj)
Converteert het doorgegeven object naar een string en voegt deze toe aan de huidige string
StringBuilder insert(int index, obj)
Converteert het doorgegeven object naar een string en voegt deze in de huidige string in
StringBuilder replace(int start, int end, String str)
Vervangt het deel van de tekenreeks dat wordt opgegeven door het start..end-interval door de doorgegeven tekenreeks
StringBuilder deleteCharAt(int index)
Verwijdert het teken met de opgegeven index uit de tekenreeks
StringBuilder delete(int start, int end)
Verwijdert tekens binnen het opgegeven interval uit de tekenreeks
int indexOf(String str, int index)
Zoekt naar een subtekenreeks in de huidige tekenreeks
int lastIndexOf(String str, int index)
Zoekt naar een subtekenreeks in de huidige tekenreeks, beginnend vanaf het einde
char charAt(int index)
Retourneert het teken in de tekenreeks bij de doorgegeven index
String substring(int start, int end)
Retourneert de subtekenreeks die is gedefinieerd door het opgegeven interval
StringBuilder reverse()
Keert de huidige tekenreeks om.
void setCharAt(int index, char)
Verandert het teken op de gespecificeerde index in het doorgegeven teken
int length()
Retourneert de lengte van de tekenreeks in tekens

Hier is een korte beschrijving van elke methode


2. Beschrijving van methoden:

Toevoegen aan een string

Gebruik de methode om iets toe te voegen aan een veranderlijke string ( StringBuilder) append(). Voorbeeld:

Code Beschrijving
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Converteren naar een standaard string

Om een StringBuilder​​object naar een String-object te converteren, hoef je alleen maar de toString()methode ervan aan te roepen. Voorbeeld

Code Uitgang
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Hoe verwijder ik een personage?

Om een ​​karakter in een veranderlijke string te verwijderen, moet je de methode gebruiken deleteCharAt(). Voorbeeld:

Code Uitgang
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Hoe vervang ik een deel van een string door een andere string?

Hiervoor is er de replace(int begin, int end, String str)methode. Voorbeeld:

Code Uitgang
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Handige voorbeelden van het werken met strings

Hoe keer ik een string om?

Er is een speciale methode om dit te doen — reverse(); Voorbeeld:

Code Uitgang
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferklas

Er is nog een klasse — StringBuffer, die een analoog is van de StringBuilderklasse, maar de methoden zijn gemarkeerd met de synchronizedmodifier. Het betekent dat het StringBufferobject tegelijkertijd toegankelijk is vanuit meerdere threads.

Maar het is veel langzamer dan StringBuilder. Je hebt deze klasse mogelijk nodig wanneer je multithreading actief gaat verkennen in de Java Multithreading- zoektocht.