StringBuffer vs StringBuilder

Η Java είναι μια πολύ δημοφιλής γλώσσα αντικειμενοστραφής. Στην Java, η κλάση String παρέχεται για να κρατήσει μια ακολουθία χαρακτήρων που δεν μπορούν να τροποποιηθούν (αφού αρχικοποιηθεί). Εναλλακτικά, η γλώσσα προγραμματισμού Java παρέχει δύο τύπους μεταβλητών ακολουθιών χαρακτήρων. Δηλαδή, όταν οι προγραμματιστές πρέπει να τροποποιήσουν ένα συγκεκριμένο String (μετά την αρχικοποίηση), πρέπει να χρησιμοποιήσουν την κλάση StringBuffer ή την κλάση StringBuilder, αντί για την κλάση String. Το StringBuffer εισήχθη στο JDK 1.0 και η κατηγορία StringBuilder εισήχθη στο JDK 1.5, στην πραγματικότητα ως αντικατάσταση της κλάσης StringBuffer (για περιβάλλοντα μονής κλωστής).

Τι είναι το StringBuffer;

Η κατηγορία StringBuffer εισήχθη στο JDK 1.0. Η κλάση StringBuffer ανήκει στο πακέτο java.lang και κληρονομείται από το γενικό java.lang.object. Οι προγραμματιστές δεν μπορούν να την επεκτείνουν περαιτέρω, αφού είναι μια τελική τάξη. Η κλάση StringBuffer υλοποιεί διεπαφές Serializable, Appendable και CharSequience. Ένα αντικείμενο της κλάσης StringBuffer μπορεί να κρατήσει μια ακολουθία χαρακτήρων που είναι μετατρέψιμες και ασφαλείς με νήματα. Αυτό σημαίνει ότι είναι πολύ παρόμοιο με ένα αντικείμενο String, αλλά η ακολουθία χαρακτήρων (μήκος και περιεχόμενο) μπορεί να αλλάξει οποιαδήποτε στιγμή μετά την αρχικοποίηση του αντικειμένου StringBuffer. Ωστόσο, αυτό πρέπει να γίνει χρησιμοποιώντας τις συγκεκριμένες μεθόδους που παρέχονται από την κλάση StringBuffer. Υπάρχουν δύο βασικές λειτουργίες στην κλάση StringBuffer. Παρέχονται με τις μεθόδους append () και insert (). Αυτές οι μέθοδοι είναι υπερφορτωμένες, επομένως είναι σε θέση να δέχονται δεδομένα οποιουδήποτε τύπου, όπως ακέραιος και μακρύς. Και οι δύο μέθοδοι μετατρέπουν πρώτα κάθε είσοδο σε μια συμβολοσειρά και στη συνέχεια προσθέτουν (προσδίδουν ή εισάγουν) τους χαρακτήρες της αντίστοιχης συμβολοσειράς στο υπάρχον αντικείμενο Stribbuffer. Η μέθοδος append () προσθέτει τη μετατραπείσα συμβολοσειρά στο τέλος του υπάρχοντος αντικειμένου StringBuffer, ενώ η μέθοδος insert () θα προσθέσει τους χαρακτήρες εισόδου στο καθορισμένο σημείο εισαγωγής.

Τι είναι το StringBuilder;

Η κατηγορία StringBuilder εισήχθη στο JDK 1.5. Το API StringBuilder είναι πολύ παρόμοιο με το API StringBuffer. Στην πραγματικότητα, η τάξη StringBuilder εισήχθη ως υποκατάστατο της κλάσης StringBuffer (για εφαρμογές με ένα νήμα). Η κλάση StringBuilder ανήκει στο πακέτο java.lang και κληρονομείται από το γενικό java.lang.object. Είναι μια τελική τάξη και έτσι οι προγραμματιστές δεν μπορούν να την επεκτείνουν. Η κλάση StringBuilder υλοποιεί διεπαφές Serializable, Appendable και CharSequience. Ένα αντικείμενο της κλάσης StringBuilder μπορεί να κρατήσει μια ακολουθία χαρακτήρων που είναι μεταβλητό αλλά όχι thread-safe. Αυτό σημαίνει ότι είναι πολύ παρόμοιο με ένα αντικείμενο String, αλλά η συμβολοσειρά μπορεί να αλλάξει ανά πάσα στιγμή. Ωστόσο, η κλάση StringBuilder δεν παρέχει συγχρονισμό και ως εκ τούτου ισχυρίζεται ότι είναι ταχύτερη από τη χρήση της κλάσης StringBuffer. Η κλάση StringBuilder παρέχει μεθόδους append () και insert () με ακριβώς παρόμοια λειτουργικότητα με την κλάση StringBuffer.

Ποια είναι η διαφορά μεταξύ του StringBuffer και του StringBuilder;

Αν και οι κλάσεις StringBuilder και StringBuffer μπορούν να χρησιμοποιηθούν για μεταβλητές ακολουθίες χαρακτήρων στην Java, έχουν μια βασική διαφορά. Σε αντίθεση με την κλάση StringBuffer, η κλάση StringBuilder δεν είναι ασφαλής για τα νήματα και δεν παρέχει συγχρονισμό. Επομένως, συνιστάται να χρησιμοποιηθεί η κλάση StringBuilder στη θέση της κλάσης StringBuffer σε εφαρμογές με ένα νήμα, επειδή υποστηρίζεται ότι η κλάση StringBuilder θα είναι πολύ πιο γρήγορη από την κλάση StringBuffer (υπό κανονικές συνθήκες).