StringBuffer εναντίον StringBuilder
Η Java είναι μια πολύ δημοφιλής αντικειμενοστραφής γλώσσα. Στην Java, η κλάση String παρέχεται για να περιέχει μια ακολουθία χαρακτήρων που δεν μπορούν να τροποποιηθούν (αφού αρχικοποιηθούν). Εναλλακτικά, η γλώσσα προγραμματισμού Java παρέχει δύο τύπους μεταβλητών ακολουθιών χαρακτήρων. Δηλαδή, όταν οι προγραμματιστές πρέπει να τροποποιήσουν μια συγκεκριμένη συμβολοσειρά (μετά την προετοιμασία), πρέπει να χρησιμοποιήσουν την κλάση 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. Το StringBuilder API μοιάζει πολύ με το StringBuffer API. Στην πραγματικότητα, η κλάση StringBuilder εισήχθη στην πραγματικότητα ως αντικατάσταση της κλάσης StringBuffer (για εφαρμογές με ένα νήμα). Η κλάση StringBuilder ανήκει στο πακέτο java.lang και κληρονομείται από το γενικό java.lang.object. Είναι μια τελική τάξη και έτσι οι προγραμματιστές δεν μπορούν να την επεκτείνουν. Η κλάση StringBuilder υλοποιεί διεπαφές Serializable, Appendable και CharSequience. Ένα αντικείμενο της κλάσης StringBuilder μπορεί να περιέχει μια ακολουθία χαρακτήρων που είναι μεταβλητή αλλά δεν είναι ασφαλής για νήμα. Αυτό σημαίνει ότι μοιάζει πολύ με ένα αντικείμενο String, αλλά η συμβολοσειρά μπορεί να αλλάξει ανά πάσα στιγμή. Ωστόσο, η κλάση StringBuilder δεν παρέχει συγχρονισμό, και επομένως υποστηρίζεται ότι είναι ταχύτερη από τη χρήση της κλάσης StringBuffer. Η κλάση StringBuilder παρέχει μεθόδους append() και insert() με ακριβώς παρόμοια λειτουργικότητα όπως στην τάξη StringBuffer.
Ποια είναι η διαφορά μεταξύ StringBuffer και StringBuilder;
Αν και οι κλάσεις StringBuilder και StringBuffer μπορούν να χρησιμοποιηθούν για μεταβλητές ακολουθίες χαρακτήρων στην Java, έχουν μια βασική διαφορά. Σε αντίθεση με την τάξη StringBuffer, η κλάση StringBuilder δεν είναι ασφαλής για νήμα και δεν παρέχει συγχρονισμό. Επομένως, συνιστάται η χρήση της κλάσης StringBuilder στη θέση της κλάσης StringBuffer σε εφαρμογές ενός νήματος, επειδή υποστηρίζεται ότι η κλάση StringBuilder θα είναι πολύ πιο γρήγορη από την κλάση StringBuffer (υπό κανονικές συνθήκες).