webForumDet fria alternativet

StringBuffer

Java

1 svar · 951 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Frågan#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);
		
	}
Medlem sedan aug. 20039 340 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.

265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)