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:
št. | StringBuffer | StringBuilder |
---|---|---|
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.0 | StringBuilder 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('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;>