Anwendung StringBuffer

_Truck_

Erfahrenes Mitglied
Hallo,

ich habe die Aufgabe erhalten mit dem StringBuffer zu arbeiten !

ich habe die toString()-Methode überschrieben und ihr wird nun ein Objekt übergeben.
In den ganzen Attribute des Objekts stehen die Texte.
Und jetzt soll der StringBuffer zum Einsatz kommen.

Leider habe ich überhaupt keine Ahnung von dessen Funktion und Anwendung.

Kann mir jemand einen kleinen schriftlichen "Lehrkurs" anbieten ? :)

Gruß Truck
 
Wenn du Java 6 hast, dann könntest du sogar den StringBuilder benutzen, dieser ist ein Stück schneller.

Da diese aber nahezu die selben Methoden haben macht dies auch gar kein Unterschied für die Erklärung:
Java:
public class Person {

	private String name;
	private String surename;
	private int age;

	public Person(String name, String surename, int age) {
		this.name = name;
		this.surename = surename;
		this.age = age;
	}

	@Override
	public String toString() {
//		String slow = name + " " + surename + " is " + age + " years old.";
		StringBuffer faster = new StringBuffer();
		faster.append(name).append(" ").append(surename);
		faster.append(" is ").append(age).append(" years old.");
		return faster.toString( );
	}

	public static void main(String[] args) {
		Person person = new Person("Max","Mustermann",155);
		System.out.println(person.toString());
	}
}

Hier siehts du wie man entweder String verkettet (auskommentiert weil langsam) oder wie man einen StringBuffer benutzt um das ganze ein wenig schneller und auch besser zu lesen zu machen.

Das Problem ist wenn man einzelne Strings verkettet wird dies intern auch über einen StringBuffer gemacht. Also wird für jedes A + B + C ein StringBuffer erstellt welcher zunächst AB zurückgibt, und dann einer welcher aus AB+C dann ABC zurückgibt. Das kostet natürlich mehr Zeit als direkt einen StringBuffer selber zu benutzen.

Wenn man es noch schneller haben möchte nimmt man den StringBuilder unter Java 6 (zumindest wenn man nicht mehrer Threads hat, denn dieser ist im Gegensatz zum StringBuffer nicht synchronisiert) und wenn man schon in etwas weiss wieviele Zeichen man zu erwarten hat, dann kann man diese Zahl im Konstruktur noch mit angeben. Dann wird schonmal ein passendes Array angelegt in welches die Zeichen dann reingeschrieben werden (ansonsten wird das interne Array immer wieder Stück für Stück vergrößert wenn neue Daten angehängt werden was auch Zeit kosten kann).
 
Zurück