Java giver tre klasser til at repræsentere en sekvens af tegn: String, StringBuffer og StringBuilder. String-klassen er en uforanderlig klasse, mens StringBuffer- og StringBuilder-klasserne er foranderlige. Der er mange forskelle mellem StringBuffer og StringBuilder. StringBuilder-klassen er introduceret siden JDK 1.5.
En liste over forskelle mellem StringBuffer og StringBuilder er givet nedenfor:
Ingen. | StringBuffer | StringBuilder |
---|---|---|
1) | StringBuffer er synkroniseret dvs trådsikker. Det betyder, at to tråde ikke kan kalde StringBuffers metoder samtidigt. | StringBuilder er ikke-synkroniseret altså ikke trådsikker. Det betyder, at to tråde kan kalde StringBuilders metoder samtidigt. |
2) | StringBuffer er mindre effektiv end StringBuilder. | StringBuilder er mere effektivt end StringBuffer. |
3) | StringBuffer blev introduceret i Java 1.0 | StringBuilder blev introduceret i Java 1.5 |
Eksempel på StringBuffer
BufferTest.java
//Java-program til at demonstrere brugen af StringBuffer-klassen. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(buffer); } }
Produktion:
hellojava
Eksempel på StringBuilder
BuilderTest.java
hvem er freddie mercury
//Java Program to demonstrate the use of StringBuilder class. public class BuilderTest{ public static void main(String[] args){ StringBuilder builder=new StringBuilder('hello'); builder.append('java'); System.out.println(builder); } }
Produktion:
hellojava
Ydelsestest af StringBuffer og StringBuilder
Lad os se koden for at kontrollere ydelsen af StringBuffer og StringBuilder klasser.
ConcatTest.java
//Java Program to demonstrate the performance of StringBuffer and StringBuilder classes. public class ConcatTest{ public static void main(String[] args){ long startTime = System.currentTimeMillis(); StringBuffer sb = new StringBuffer('Java'); for (int i=0; i<10000; i++){ sb.append('tpoint'); } system.out.println('time taken by stringbuffer: ' + (system.currenttimemillis() - starttime) 'ms'); starttime="System.currentTimeMillis();" stringbuilder sb2="new" stringbuilder('java'); for (int i="0;" i<10000; sb2.append('tpoint'); stringbuilder: < pre> <p> <strong>Output:</strong> </p> <pre> Time taken by StringBuffer: 16ms Time taken by StringBuilder: 0ms </pre> <hr></10000;>
10000;>