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