Java poskytuje tri triedy reprezentujúce postupnosť znakov: String, StringBuffer a StringBuilder. Trieda String je nemenná trieda, zatiaľ čo triedy StringBuffer a StringBuilder sú meniteľné. Medzi StringBuffer a StringBuilder je veľa rozdielov. Trieda StringBuilder je zavedená od JDK 1.5.
Zoznam rozdielov medzi StringBuffer a StringBuilder je uvedený nižšie:
Nie | StringBuffer | StringBuilder |
---|---|---|
1) | StringBuffer je synchronizované t.j. bezpečné pre vlákna. Znamená to, že dve vlákna nemôžu súčasne volať metódy StringBuffer. | StringBuilder je nesynchronizované t.j. nie sú bezpečné pre vlákna. Znamená to, že dve vlákna môžu súčasne volať metódy StringBuilder. |
2) | StringBuffer je menej efektívne ako StringBuilder. | StringBuilder je viac efektívny než StringBuffer. |
3) | StringBuffer bol predstavený v Jave 1.0 | StringBuilder bol predstavený v Jave 1.5 |
Príklad StringBuffer
BufferTest.java
//Java Program na demonštráciu použitia triedy StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('ahoj'); buffer.append('java'); System.out.println(buffer); } }
Výkon:
hellojava
Príklad StringBuilder
BuilderTest.java
java miešanie do int
//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); } }
Výkon:
hellojava
Test výkonnosti StringBuffer a StringBuilder
Pozrime sa na kód na kontrolu výkonu tried StringBuffer a 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;>