2010-09-24 23 views
7

Qual è la differenza tra StringBuffer e StringBuilder Vs StringTokenizer nell'implementazione interna. quando usarli. aspettando cortesemente la risposta.StringBuffer vs StringBuilder Vs StringTokenizer

Aggiornamento: -

Ho anche intenzione attraverso il codice sorgente.

+1

Eventuali duplicati di [Differenza tra StringBuilder e StringBuffer] (http://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer) –

risposta

17

StringBuffer - introdotta nel JDK 1.0 - è thread-safe (tutti i suoi metodi sono synchronized), mentre StringBuilder - dal JDK 1.5 - non lo è. Pertanto si consiglia di utilizzare quest'ultimo in circostanze normali.

StringTokenizer è pensato per uno scopo completamente diverso rispetto ai primi due: tagliare le stringhe in pezzi, anziché assemblare. Come notato da @Henning, è anche "ritirato" da JDK 1.5 - si consiglia di utilizzare invece String.split. versione è sincronizzato di StringBuilder (introdotto dopo la sua peer non sincronizzato)

+0

'StringTokenizer', pur non deprecato, è anche un "legacy classe che viene mantenuta per ragioni di compatibilità anche se il suo uso è scoraggiato nel nuovo codice ". http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html – Henning

+0

@Henning, grazie per la segnalazione - Ho aggiornato la mia risposta per includerla. –

5
  • StringBuffer è progettato per essere thread-safe e tutti i metodi pubblici in StringBuffer sono sincronizzati. StringBuilder non gestisce il problema relativo alla sicurezza dei thread e nessuno dei suoi metodi è sincronizzato.

  • StringBuilder ha prestazioni migliori rispetto a StringBuffer nella maggior parte dei casi.

  • Utilizzare il nuovo StringBuilder laddove possibile.

Here è performance comparison di StringBuilder & StringBuffer

StringBuilder & StringBuffer Contiene String dove la classe StringoTokeizer consente a un'applicazione di rompere una stringa in token .. quindi è come uno strano

3

StringBuffer.
StringTokenizer viene utilizzato per suddividere la stringa in token in base a determinati delimitatori.

+0

Non sarebbe più semplice e chiaro dire "StringBuilder è la versione non sincronizzata di StringBuffer"? –

+0

Sto lavorando molto in java precedente 1.5 dove non c'era StringBuilder, quindi il mio punto di riferimento è StringBuffer :-) – Gadolin

+0

@Peter Török: No. È perfettamente semplice e chiaro così com'è, e dà anche una prospettiva storica, che il tuo no. – EJP

1

StringBuffer funge stesso scopo StringBuilder tranne che StringBuffer è thread-safe -

Problemi correlati