Βασική διαφορά – String vs StringBuffer vs StringBuilder στην Java
Οι String, StringBuffer και String Builder είναι κλάσεις στην Java. Το String χρησιμοποιείται ευρέως στον προγραμματισμό Java. Μόλις δημιουργηθεί ένα αντικείμενο του String, δεν είναι δυνατή η αλλαγή του. Κάθε φορά που συμβαίνει μια αλλαγή στη συμβολοσειρά, δημιουργεί μια νέα συμβολοσειρά. Ακόμα κι αν είναι συνένωση με μια υπάρχουσα συμβολοσειρά, δημιουργεί μια νέα συμβολοσειρά. Αυτό προκαλεί σπατάλη μνήμης. Οι κλάσεις StringBuffer και StringBuilder στην Java χρησιμοποιούνται για την τροποποίηση του String. Η βασική διαφορά μεταξύ String, StringBuffer και StringBuilder στην Java είναι ότι το String είναι μια κλάση για τη δημιουργία ενός αντικειμένου τύπου String που είναι μια ακολουθία χαρακτήρων, το StringBuffer είναι μια κλάση που χρησιμοποιείται για την τροποποίηση Strings που παρέχει ασφάλεια νημάτων και το StringBuilder είναι μια κλάση που χρησιμοποιείται για την τροποποίηση συμβολοσειρών που δεν παρέχουν ασφάλεια νημάτων.
Τι είναι το String στην Java;
Η κλάση συμβολοσειράς βρίσκεται στο πακέτο java.lang. Κάθε φορά που ο προγραμματιστής δημιουργεί μια συμβολοσειρά, είναι αντικείμενο τύπου String. Οι συμβολοσειρές είναι αμετάβλητες που σημαίνει ότι μόλις δημιουργηθεί το αντικείμενο, δεν μπορεί να αλλάξει. Τα αντικείμενα που δημιουργούνται με χρήση κλάσεων περιτυλίγματος όπως Integer, Byte, Float, Double είναι επίσης αμετάβλητα. Μια κυριολεκτική συμβολοσειρά περικλείεται σε διπλά εισαγωγικά. π.χ. "Γειά σου Κόσμε". Κάθε φορά που δημιουργείται μια κυριολεκτική συμβολοσειρά, η εικονική μηχανή Java (JVM) ελέγχει τη συγκέντρωση σταθερών συμβολοσειρών. Εάν υπάρχει η συμβολοσειρά, επιστρέφεται μια αναφορά στη συγκέντρωση σταθερών συμβολοσειράς. Εάν είναι μια νέα συμβολοσειρά, αυτό το αντικείμενο δημιουργείται στη συγκέντρωση σταθερών συμβολοσειρών.
Εικόνα 01: Πρόγραμμα Java χρησιμοποιώντας String, StringBuffer και StringBuilder
Ανατρέξτε στο παρακάτω κομμάτι κώδικα.
String s1="Γεια";
s1=s1 + "Κόσμος";
System.out.println(s1);
Στην πρώτη πρόταση, το s1 αναφέρεται στο "Hello" στη συγκέντρωση σταθερών συμβολοσειράς. Στη δεύτερη δήλωση, το JVM δεν αλλάζει την υπάρχουσα συμβολοσειρά. Αντίθετα, δημιουργεί μια νέα συμβολοσειρά ως "Hello World" και το s1 αναφέρεται τώρα σε αυτό το νέο String. Το αντικείμενο εξόδου "Hello" εξακολουθεί να υπάρχει στη συγκέντρωση σταθερών συμβολοσειρών.
Αν υπάρχει κωδικός που είναι, String s1="Γεια";
Συμβολοσειρά s2=s1;
s1, s2 και τα δύο θα αναφέρονται στο αντικείμενο String "Hello".
Τι είναι το StringBuffer στην Java;
Η κλάση StringBuffer χρησιμοποιείται για να μετατρέψει τα αντικείμενα String. Επομένως, αυτά τα αντικείμενα μπορούν να τροποποιηθούν. Το StringBuffer ορίζει τέσσερις κατασκευαστές. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Αναφέρετε τον κωδικό παρακάτω, StringBuffer s1=new StringBuffer("Hello");
s1.append("Κόσμος");
System.out.println(s1);
Στην πρόταση 1, το s1 αναφέρεται στο αντικείμενο "Hello" σε ένα σωρό. Το αντικείμενο είναι μεταβλητό επειδή δημιουργείται χρησιμοποιώντας το StringBuffer. Στην πρόταση 2, το "World" προσαρτάται στο ίδιο αντικείμενο συμβολοσειράς "Hello".
Τα αντικείμενα συμβολοσειράς που δημιουργήθηκαν με την κλάση StringBuffer μπορούν να εξοικονομήσουν μνήμη. Το StringBuffer παρέχει ασφάλεια νημάτων επειδή δύο νήματα δεν μπορούν να έχουν πρόσβαση στην ίδια μέθοδο στην κλάση StringBuffer ταυτόχρονα. Η ασφάλεια νήματος μειώνει την απόδοση του StringBuffer. Η κλάση StringBuffer περιέχει μεθόδους όπως append(), insert(), reverse(), replace().
Τι είναι το StringBuilder στην Java;
Η κλάση StringBuilder χρησιμοποιείται για να κάνει τα αντικείμενα String μεταβλητά. Επομένως, αυτά τα αντικείμενα μπορούν να τροποποιηθούν. Η λειτουργικότητα είναι παρόμοια με το StringBuffer, αλλά αυτό δεν παρέχει ασφάλεια νημάτων. Το StringBuilder έχει κατασκευαστές όπως StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Ανατρέξτε στον παρακάτω κωδικό.
StringBuilder s1=νέο StringBuilder("Hello");
s1.append("Κόσμος");
System.out.println(s1);
Στην πρόταση 1, το s1 αναφέρεται στο αντικείμενο "Hello" σε ένα σωρό. Το αντικείμενο είναι μεταβλητό επειδή δημιουργείται χρησιμοποιώντας το StringBuilder. Στην πρόταση 2, το "World" προσαρτάται στο ίδιο αντικείμενο String "Hello". Δεν υπάρχει δημιουργία εντελώς νέου αντικειμένου String.
Τα αντικείμενα συμβολοσειράς που δημιουργήθηκαν με την κλάση StringBuilder μπορούν να εξοικονομήσουν μνήμη. Σε αντίθεση με το StringBuffer, το StringBuilder δεν παρέχει ασφάλεια νημάτων επειδή δύο νήματα μπορούν να έχουν πρόσβαση στην ίδια μέθοδο στην κλάση StringBuilder ταυτόχρονα. Η κλάση StringBuilder περιέχει μεθόδους όπως append(), insert(), reverse(), replace().
Ποια είναι η ομοιότητα μεταξύ String, StringBuffer και StringBuilder στην Java;
Όλα μπορούν να χρησιμοποιηθούν για τη δημιουργία συμβολοσειρών
Ποια είναι η διαφορά μεταξύ του String StringBuffer και του StringBuilder στην Java;
String εναντίον StringBuffer εναντίον StringBuilder |
|
Συμβολοσειρά | Η συμβολοσειρά είναι μια κλάση Java που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου τύπου String, το οποίο είναι μια ακολουθία χαρακτήρων. |
StringBuffer | StringBuffer είναι μια κλάση Java που χρησιμοποιείται για τη δημιουργία αντικειμένων String, τα οποία μπορούν να τροποποιηθούν με ασφάλεια νημάτων. |
StringBuilder | StringBuilder είναι μια κλάση που χρησιμοποιείται για τη δημιουργία αντικειμένων συμβολοσειρών, τα οποία μπορούν να τροποποιηθούν χωρίς ασφάλεια νημάτων. |
Μεταβλητότητα | |
Συμβολοσειρά | Η συμβολοσειρά είναι μια αμετάβλητη κλάση. |
StringBuffer | StringBuffer είναι μια μεταβλητή κλάση. |
StringBuilder | Το StringBuilder είναι μια μεταβλητή κλάση. |
Ασφάλεια νήματος | |
Συμβολοσειρά | Οι μέθοδοι της συμβολοσειράς είναι ασφαλείς με νήμα. |
StringBuffer | Οι μέθοδοι του StringBuffer είναι ασφαλείς για νήμα και συγχρονίζονται. |
StringBuilder | Οι μέθοδοι του StringBuilder δεν είναι ασφαλείς με νήματα και δεν συγχρονίζονται. |
Απόδοση | |
Συμβολοσειρά | Η συμβολοσειρά είναι γρήγορη. |
StringBuffer | StringBuffer είναι αργή. |
StringBuilder | Το StringBuilder είναι γρήγορο. |
Σύνοψη – String vs StringBuffer vs StringBuilder στην Java
Το String, το StringBuffer και το StringBuilder φαίνεται να είναι το ίδιο, αλλά έχουν διαφορετική σημασία. Όλα αυτά είναι τάξεις Java. Η διαφορά μεταξύ String, StringBuffer και StringBuilder στην Java είναι ότι, το String είναι κλάση για τη δημιουργία ενός αντικειμένου τύπου String, το οποίο είναι ένα σύνολο χαρακτήρων, το StringBuffer είναι μια κλάση που χρησιμοποιείται για την τροποποίηση των Strings και την παροχή ασφάλειας νημάτων, ενώ το StringBuilder είναι ένα κλάση που χρησιμοποιείται για την τροποποίηση συμβολοσειρών που δεν παρέχουν ασφάλεια νήματος.
Λήψη του PDF String vs StringBuffer vs StringBuilder σε Java
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ String StringBuffer και StringBuilder στην Java