logo

Skillnaden mellan StringBuffer och StringBuilder

Java tillhandahåller tre klasser för att representera en sekvens av tecken: String, StringBuffer och StringBuilder. Klassen String är en oföränderlig klass medan klasserna StringBuffer och StringBuilder är föränderliga. Det finns många skillnader mellan StringBuffer och StringBuilder. Klassen StringBuilder introduceras sedan JDK 1.5.

En lista över skillnader mellan StringBuffer och StringBuilder ges nedan:

Skillnaden mellan StringBuffer och StringBuilder
Nej.StringBufferStringBuilder
1)StringBuffer är synkroniserad dvs trådsäker. Det betyder att två trådar inte kan anropa metoderna för StringBuffer samtidigt.StringBuilder är osynkroniserad dvs inte trådsäker. Det betyder att två trådar kan anropa metoderna för StringBuilder samtidigt.
2)StringBuffer är mindre effektivt än StringBuilder.StringBuilder är mer effektiv än StringBuffer.
3)StringBuffer introducerades i Java 1.0StringBuilder introducerades i Java 1.5

StringBuffer Exempel

BufferTest.java

//Java-program för att demonstrera användningen av StringBuffer-klassen. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hej'); buffer.append('java'); System.out.println(buffert); } }

Produktion:

 hellojava 

StringBuilder Exempel

BuilderTest.java

java sortera en lista
 //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 

Prestandatest av StringBuffer och StringBuilder

Låt oss se koden för att kontrollera prestanda för klasserna StringBuffer och StringBuilder.

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(&apos;Java&apos;); 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;>