webForumDet fria alternativet

StringBuffer

1 svar · 949 visningar · startad av clarkbones

clarkbonesMedlem sedan feb. 20013 023 inlägg
#1

Hej, jag skriver nästan aldrig javakod och har ingen kompilator. Vill bara fråga om denna kod kommer att kasta ett exception vid append-metoden eller om strBuf2 kommer att utökas automatiskt? Vad skrivs ut?

	public static void main(String[] args) {
		//    	Examples of Creation of Strings
		
		StringBuffer strBuf2 = new StringBuffer(10);
		strBuf2.append("ABCDEFGHIJKLMNO");
		System.out.println(strBuf2);
		
	}
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

En StringBuffer har två olika parametrar, dess kapacitet och dess längd. 10 i ditt exempel syftar på kapaciteten.

Kapaciteten avgör hur många tecken du kan lägga till buffern innan den behöver förlängas internt. StringBuffer har en array definierad internt, som kastas bort och ersätts av en ny, större array vid behov. Det är dock inget som du behöver bry dig om som programmerare, annat än av prestandaskäl.

Om du t ex vet att du kommer lägga till precis 1000 tecken till en StringBuffer kan du välja att skapa en new StringBuffer(1000). Om du skapar en med kapacitet noll eller 16 (standard om du anropar new StringBuffer() utan argument) så beter sig koden funktionellt likadant, om än med något sämre prestanda.

Dock behöver du i regel inte använda dig av StringBuffer alls om du inte har särskilda skäl till det. Om du konkatenerar två strängar med + så används StringBuffer internt utan att du behöver fundera på saken. Normalt används ju String och inte StringBuffer (från programmerarens synvinkel) för att lagra strängar.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)