StringBuffer vs StringBuilder
Java er et meget populært objektorienteret sprog. I Java leveres strengeklassen til at indeholde en sekvens af tegn, der ikke kan ændres (når de først er initialiseret). Alternativt giver Java-programmeringssprog to typer af mutable sekvenser af tegn. Det vil sige, at når programmererne skal ændre en bestemt streng (efter initialisering), skal de bruge klassen StringBuffer eller klassen StringBuilder i stedet for klassen String. StringBuffer blev introduceret i JDK 1.0, og StringBuilder-klassen blev introduceret i JDK 1.5, faktisk som en erstatning for StringBuffer-klassen (til enkelttrådsmiljøer).
Hvad er StringBuffer?
StringBuffer-klassen blev introduceret i JDK 1.0. StringBuffer-klassen hører til java.lang-pakken og er arvet fra den generiske java.lang.object. Programmerere kan ikke udvide det yderligere, da det er en sidste klasse. StringBuffer-klassen implementerer Serialiserbare, appendable og CharSequience-grænseflader. Et objekt i klassen StringBuffer kan indeholde en sekvens af tegn, der er mutable og tråd-sikre. Det betyder, at det ligner meget et strengobjekt, men rækkefølgen af tegn (længde og indhold) kan ændres når som helst efter initialisering af StringBuffer-objektet. Dette bør dog gøres ved hjælp af de specifikke metoder, der leveres i StringBuffer-klassen. Der er to hovedoperationer i StringBuffer-klassen. De leveres ved hjælp af append () og insert () metoder. Disse metoder er overbelastede, så de er i stand til at acceptere data af enhver type, såsom heltal og lang. Begge metoder transformerer først et hvilket som helst input til en streng, og tilføjer derefter (tilføjer eller indsætter) tegnene for den tilsvarende streng til det eksisterende Stribbuffer-objekt. Metoden append () tilføjer den konverterede streng til slutningen af det eksisterende StringBuffer-objekt, mens insert () -metoden tilføjer inputtegnene til det specificerede indsættelsespunkt.
Hvad er StringBuilder?
StringBuilder-klassen blev introduceret i JDK 1.5. StringBuilder API ligner meget StringBuffer API. Faktisk blev StringBuilder-klassen faktisk introduceret som en erstatning for StringBuffer-klassen (til applikationer med én tråd). StringBuilder-klassen hører til java.lang-pakken og er arvet fra den generiske java.lang.object. Det er en sidste klasse, og programmererne kan derfor ikke udvide den. StringBuilder-klassen implementerer Serialiserbare, Appendable og CharSequience-grænseflader. Et objekt i klassen StringBuilder kan indeholde en sekvens af tegn, der er mutable, men ikke tråd-sikre. Det betyder, at det ligner meget et strengobjekt, men strengen kan ændres når som helst. Men StringBuilder-klassen giver ikke synkronisering, og det hævdes derfor at være hurtigere end at bruge StringBuffer-klassen. StringBuilder-klassen giver append () og insert () -metoder med nøjagtigt lignende funktionalitet som i StringBuffer-klassen.
Hvad er forskellen mellem StringBuffer og StringBuilder?
Skønt StringBuilder og StringBuffer klasser kan bruges til mutable sekvenser af tegn i Java, har de en nøgleforskel. I modsætning til StringBuffer-klassen er StringBuilder-klassen ikke tråd-sikker og giver ingen synkronisering. Derfor anbefales det, at StringBuilder-klassen bruges i stedet for StringBuffer-klassen i applikationer med enkelt tråd, fordi det hævdes, at StringBuilder-klassen vil være meget hurtigere end StringBuffer-klassen (under normale omstændigheder).