logo

Skirtumas tarp StringBuffer ir StringBuilder

„Java“ pateikia tris klases, kurios atspindi simbolių seką: „String“, „StringBuffer“ ir „StringBuilder“. Styginių klasė yra nekintanti klasė, o StringBuffer ir StringBuilder klasės yra kintamos. Yra daug skirtumų tarp „StringBuffer“ ir „StringBuilder“. „StringBuilder“ klasė pristatoma nuo JDK 1.5 versijos.

Toliau pateikiamas „StringBuffer“ ir „StringBuilder“ skirtumų sąrašas:

Skirtumas tarp StringBuffer ir StringBuilder
Nr.StringBufferStringBuilder
1)StringBuffer yra sinchronizuoti t.y. saugus siūlams. Tai reiškia, kad dvi gijos negali vienu metu iškviesti StringBuffer metodų.StringBuilder yra nesinchronizuotas y., nėra saugus siūlams. Tai reiškia, kad dvi gijos gali vienu metu iškviesti StringBuilder metodus.
2)StringBuffer yra mažiau efektyvus nei StringBuilder.StringBuilder yra efektyvesnis nei StringBuffer.
3)StringBuffer buvo pristatytas Java 1.0StringBuilder buvo pristatytas Java 1.5 versijoje

StringBuffer pavyzdys

BufferTest.java

//Java programa, skirta parodyti StringBuffer klasės naudojimą. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('labas'); buffer.append('java'); System.out.println(buferis); } }

Išvestis:

 hellojava 

StringBuilder pavyzdys

BuilderTest.java

paskirstymo dėsnio Būlio algebra
 //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); } } 

Išvestis:

 hellojava 

StringBuffer ir StringBuilder našumo testas

Pažiūrėkime kodą, skirtą „StringBuffer“ ir „StringBuilder“ klasių našumui patikrinti.

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;>