# Πώς να χρησιμοποιήσετε το StringBuilder της Java

Η κλάση StringBuilder της Java μπορεί να χρησιμοποιηθεί αντί των παραδοσιακών συμβολοσειρών. Σε αντίθεση με τις παραδοσιακές συμβολοσειρές, η StringBuilder σας επιτρέπει να κάνετε αλλαγές σε μια συμβολοσειρά χωρίς να δημιουργήσετε ένα νέο αντικείμενο. Οι αλλαγές μπορούν να γίνουν χρησιμοποιώντας διαφορετικές μεθόδους.

## Τι είναι το StringBuilder της Java;

Η [κλάση string στη Java](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/symboloseires-java/) είναι αμετάβλητη και δεν έχει υποκλάσεις. Μια εναλλακτική λύση για αυτήν την τελική κλάση είναι το StringBuilder της Java. Δημιουργεί μια ακολουθία χαρακτήρων που **μπορεί να αλλάξει μετά τη δημιουργία της**. Με αυτόν τον τρόπο, η StringBuilder της Java είναι παρόμοια με την StringBuffer. Οι δύο κλάσεις έχουν παρόμοιο σκοπό, αλλά σε αντίθεση με την επιλογή buffer, η StringBuilder δεν είναι συγχρονισμένη. Αυτό καθιστά την StringBuilder μια καλή επιλογή όταν εργάζεστε με μεμονωμένα threads, καθώς είναι πολύ πιο γρήγορη από την StringBuffer. Σε αυτό το σεμινάριο, θα σας παρουσιάσουμε την StringBuilder στη Java και θα σας δείξουμε μερικές από τις πολλές χρήσεις της.

## Ποια είναι η σύνταξη του StringBuilder της Java;

Η σύνταξη του StringBuilder της Java ακολουθεί πάντα το ίδιο μοτίβο, το οποίο έχει την εξής μορφή:

```java
public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
```

Για να κατανοήσετε τα βασικά στοιχεία του τρόπου λειτουργίας της κλάσης και του σκοπού της, είναι χρήσιμο να εξετάσετε πρώτα την παραδοσιακή κλάση String. Αφού δηλώσετε ένα αντικείμενο στην String, δεν μπορείτε πλέον να το αλλάξετε. Αν θέλετε να κάνετε αλλαγές, θα πρέπει να δημιουργήσετε και να αποθηκεύσετε ένα εντελώς νέο αντικείμενο. Αυτό δημιουργεί μεγάλη σπατάλη δεδομένων και μπορεί να οδηγήσει σε μείωση της απόδοσης. Αν αντί για αυτό χρησιμοποιήσετε το StringBuilder στη Java, μπορείτε να κάνετε αλλαγές στις συμβολοσειρές **χωρίς να δημιουργήσετε μια νέα**. Αυτό μειώνει τη σπατάλη και βελτιώνει την απόδοση.

## Ποιοι είναι οι κατασκευαστές για το StringBuilder της Java;

Το StringBuilder της Java διαθέτει 4 κατασκευαστές που βοηθούν **στη μετατροπή της συμβολοσειράς στη σωστή μορφή για την κλάση**. Χρησιμοποιούνται επίσης για τη διαμόρφωση. Ακολουθούν οι τέσσερις κατασκευαστές και οι σκοποί τους:

- `StringBuilder()`: Δημιουργεί ένα κενό StringBuilder με μέγιστη χωρητικότητα 16 χαρακτήρων
- `StringBuilder(int capacity)`: Δημιουργεί ένα StringBuilder χωρίς χαρακτήρες, του οποίου η μέγιστη χωρητικότητα ορίζεται χρησιμοποιώντας το όρισμα capacity
- `StringBuilder(CharSequence seq)`: Δημιουργεί ένα string builder με τους ίδιους χαρακτήρες με την αποθηκευμένη ακολουθία χαρακτήρων
- `StringBuilder(String str)`: Δημιουργεί ένα StringBuilder με τη συμβολοσειρά που εισάγετε

Ας δούμε ένα παράδειγμα για να κατανοήσουμε πώς λειτουργούν στην πράξη αυτοί οι κατασκευαστές:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
	str.append("ABC");
	System.out.println("First constructor  = " + str.toString());
	StringBuilder str2 = new StringBuilder(5);
	System.out.println("Second constructor  = " + str2.capacity());
	StringBuilder str3 = new StringBuilder("ABCDEFGHIJK");
	System.out.println("Third constructor = " + str3.toString());
	StringBuilder str4 = new StringBuilder(str3.toString());
	System.out.println("Fourth constructor = " + str4.toString());
	}
}
```

Όταν χρησιμοποιούμε την εντολή Java `System.out.println` για να λάβουμε το αποτέλεσμα, λαμβάνουμε το εξής:

```java
First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJK
```

## Ποιες μέθοδοι χρησιμοποιούνται με το StringBuilder στη Java;

Υπάρχουν διάφορες μέθοδοι που μπορούν να χρησιμοποιηθούν με την κλάση StringBuilder της Java. Παρακάτω παρουσιάζουμε μερικές από τις πιο σημαντικές, με παραδείγματα κώδικα.

### `append()`

Η μέθοδος `append()` χρησιμοποιείται για να προσθέσει μια συμβολοσειρά σε μια άλλη. Έχει διάφορες παραμέτρους. Δείτε πώς λειτουργεί στην πράξη:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.append("FGHIJK");
	System.out.println(str);
	}
}
```

Το αποτέλεσμα είναι το εξής:

```java
ABCDEFGHIJK
```

### `insert()`

Η μέθοδος `insert()` χρησιμοποιείται σε συνδυασμό με το StringBuilder της Java για την εισαγωγή μιας συμβολοσειράς σε ένα συγκεκριμένο σημείο. Ακολουθεί ένα παράδειγμα για το πώς λειτουργεί:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.insert(1,"FGHIJK");
	System.out.println(str);
	}
}
```

Ακολουθεί το αποτέλεσμα:

```java
AFGHIJKBCDEFGHIJK
```

Ο ακέραιος αριθμός (στην περίπτωση αυτή 1) χρησιμοποιείται για να καθορίσει τη θέση στην οποία θα εισαχθεί η συμβολοσειρά.

### `replace()`

Η μέθοδος `replace()` αντικαθιστά μια συμβολοσειρά ή μέρος μιας συμβολοσειράς. Ορίζεται χρησιμοποιώντας `beginIndex` και `endIndex`. Έτσι λειτουργεί στην πράξη:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.replace(1,4,"FGHIJK");
	System.out.println(str);
	}
}
```

Το αποτέλεσμα έχει την ακόλουθη μορφή:

```java
AFGHIJKE
```

### `reverse()`

Η μέθοδος `reverse()` χρησιμοποιείται για να τοποθετήσει την αποθηκευμένη συμβολοσειρά σε αντίστροφη σειρά. Δείτε πώς λειτουργεί:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.reverse();
	System.out.println(str);
	}
}
```

Ακολουθεί το αποτέλεσμα:

```java
EDCBA
```

### `delete()`

Μπορείτε να χρησιμοποιήσετε τη μέθοδο `delete()` με το StringBuilder της Java για να διαγράψετε όλο ή μέρος ενός string. Αν θέλετε να διαγράψετε μέρος του string, μπορείτε να το κάνετε με `beginIndex` και `endIndex`.

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.delete(1,4);
	System.out.println(str);
	}
}
```

Ακολουθεί το αποτέλεσμα:

```java
AE
```

### `capacity()`

Η μέθοδος `capacity()` σας δίνει τον **τρέχοντα μέγιστο αριθμό χαρακτήρων** για το StringBuilder. Συνήθως είναι 16. Αν αυξηθεί, αυτό γίνεται συνήθως χρησιμοποιώντας τον τύπο «τρέχων αριθμός χαρακτήρων \* 2 + 2». Έτσι, αν είναι επί του παρόντος 16, θα πολλαπλασιαστεί με 2 (32) και στη συνέχεια θα προστεθούν 2. Μπορείτε να το δείτε στο παράδειγμά μας:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("This is another example");
	System.out.println(str.capacity());
	}
}
```

Το αποτέλεσμα έχει την ακόλουθη μορφή:

```java
16
16
34
```

### `ensureCapacity()`

Η μέθοδος `ensureCapacity()` διασφαλίζει ότι ο **αριθμός των διαθέσιμων χαρακτήρων είναι τουλάχιστον ίσος με την καθορισμένη τιμή**. Εάν αυτό δεν ισχύει, η χωρητικότητα θα αυξηθεί χρησιμοποιώντας τον παραπάνω τύπο, «τρέχων αριθμός χαρακτήρων \* 2 + 2». Αυτό μπορείτε να το δείτε στο παρακάτω παράδειγμα:

```java
public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("This is another example");
	System.out.println(str.capacity());
	str.ensureCapacity(5);
	System.out.println(str.capacity());
	str.ensureCapacity(40);
	System.out.println(str.capacity());
	}
}
```

Ακολουθεί το αποτέλεσμα:

```java
16
16
34
34
70
```

Πρώτα βλέπουμε την τυπική τιμή (16), μετά αυτή η τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2 (34) και τέλος η νέα τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2.


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-stringbuilder/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-stringbuilder/) for AI/LLM consumption.