StringBuffer vs StringBuilder
Java is een zeer populaire objectgeoriënteerde taal. In Java wordt de klasse String geleverd om een reeks tekens vast te houden die niet kan worden gewijzigd (eenmaal geïnitialiseerd). Als alternatief biedt Java-programmeertaal twee soorten veranderlijke reeksen tekens. Dat wil zeggen, wanneer de programmeurs een bepaalde String moeten wijzigen (na initialisatie), moeten ze de StringBuffer-klasse of de StringBuilder-klasse gebruiken in plaats van de String-klasse. StringBuffer werd geïntroduceerd in JDK 1.0 en de StringBuilder-klasse werd geïntroduceerd in JDK 1.5, eigenlijk als vervanging voor de StringBuffer-klasse (voor omgevingen met één thread).
Wat is StringBuffer?
StringBuffer-klasse is geïntroduceerd in JDK 1.0. De klasse StringBuffer behoort tot het pakket java.lang en is overgenomen van het generieke java.lang.object. Programmeurs kunnen het niet verder uitbreiden omdat het een laatste les is. StringBuffer-klasse implementeert Serializable, Appendable en CharSequience-interfaces. Een object van de klasse StringBuffer kan een reeks tekens bevatten die veranderlijk en thread-safe is. Dat betekent dat het veel lijkt op een String-object, maar de reeks tekens (lengte en inhoud) kan op elk moment worden gewijzigd nadat het StringBuffer-object is geïnitialiseerd. Dat moet echter worden gedaan met behulp van de specifieke methoden die door de StringBuffer-klasse worden geboden. Er zijn twee principiële bewerkingen in de StringBuffer-klasse. Ze worden geleverd door de methoden append() en insert(). Deze methoden zijn overbelast, zodat ze gegevens van elk type kunnen accepteren, zoals integer en lang. Beide methoden transformeren eerst elke invoer naar een tekenreeks en voegen vervolgens de tekens van de overeenkomstige tekenreeks toe (toevoegen of invoegen) aan het bestaande Stribbuffer-object. De methode append() voegt de geconverteerde tekenreeks toe aan het einde van het bestaande StringBuffer-object, terwijl de methode insert() de invoertekens toevoegt aan het opgegeven invoegpunt.
Wat is StringBuilder?
StringBuilder-klasse werd geïntroduceerd in JDK 1.5. StringBuilder API lijkt veel op StringBuffer API. In feite is de StringBuilder-klasse geïntroduceerd als vervanging voor de StringBuffer-klasse (voor toepassingen met één thread). De klasse StringBuilder behoort tot het pakket java.lang en is overgenomen van het generieke java.lang.object. Het is een laatste les en dus kunnen de programmeurs deze niet verlengen. StringBuilder-klasse implementeert Serializable, Appendable en CharSequience-interfaces. Een object van de klasse StringBuilder kan een reeks tekens bevatten die veranderbaar is maar niet thread-safe. Dat betekent dat het veel lijkt op een String-object, maar de string kan op elk moment worden gewijzigd. Maar de StringBuilder-klasse biedt geen synchronisatie en daarom wordt beweerd dat deze sneller is dan de StringBuffer-klasse. De klasse StringBuilder biedt methodes append() en insert() met exact dezelfde functionaliteit als in de klasse StringBuffer.
Wat is het verschil tussen StringBuffer en StringBuilder?
Hoewel StringBuilder- en StringBuffer-klassen kunnen worden gebruikt voor veranderlijke reeksen tekens in Java, hebben ze een belangrijk verschil. In tegenstelling tot de StringBuffer-klasse, is de StringBuilder-klasse niet thread-safe en biedt geen synchronisatie. Daarom wordt aanbevolen dat de klasse StringBuilder wordt gebruikt in plaats van de klasse StringBuffer in toepassingen met één thread, omdat wordt beweerd dat de klasse StringBuilder veel sneller zal zijn dan de klasse StringBuffer (onder normale omstandigheden).