logo

Razlika med StringBuffer in StringBuilder

Java nudi tri razrede za predstavitev zaporedja znakov: String, StringBuffer in StringBuilder. Razred String je nespremenljiv razred, medtem ko sta razreda StringBuffer in StringBuilder spremenljiva. Med StringBuffer in StringBuilder je veliko razlik. Razred StringBuilder je uveden od JDK 1.5.

Spodaj je naveden seznam razlik med StringBuffer in StringBuilder:

Razlika med StringBuffer in StringBuilder
št.StringBufferStringBuilder
1)StringBuffer je sinhronizirano varno za navoje. To pomeni, da dve niti ne moreta klicati metod StringBufferja hkrati.StringBuilder je nesinhronizirano ni varno za nit. To pomeni, da lahko dve niti hkrati kličeta metode StringBuilderja.
2)StringBuffer je manj učinkovita kot StringBuilder.StringBuilder je bolj učinkovit kot StringBuffer.
3)StringBuffer je bil predstavljen v Javi 1.0StringBuilder je bil predstavljen v Javi 1.5

Primer StringBuffer

BufferTest.java

//Program Java za predstavitev uporabe razreda StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(medpomnilnik); }}

Izhod:

 hellojava 

Primer StringBuilder

BuilderTest.java

kako nadgradim javo
 //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); } } 

Izhod:

 hellojava 

Preizkus zmogljivosti StringBuffer in StringBuilder

Oglejmo si kodo za preverjanje učinkovitosti razredov StringBuffer in 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;>