2010-09-24 27 views
7

cuál es la diferencia entre StringBuffer vs StringBuilder Vs StringTokenizer en la implementación interna. cuándo usar estos. amablemente esperando la respuesta.StringBuffer vs StringBuilder Vs StringTokenizer

Actualización: -

También voy a través del código fuente.

+1

Posible duplicado de [Diferencia entre StringBuilder y StringBuffer] (http://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer) –

Respuesta

17

StringBuffer - introducida en JDK 1.0 - es seguro para subprocesos (todos sus métodos son synchronized), mientras que StringBuilder - desde JDK 1.5 - no lo es. Por lo tanto, se recomienda utilizar este último en circunstancias normales.

StringTokenizer tiene un propósito completamente diferente a los dos anteriores: cortar las cuerdas en piezas, en lugar de ensamblarlas. Como señaló @Henning, también se "retiró" desde JDK 1.5. En su lugar, se recomienda usar String.split. versión está sincronizado de StringBuilder (introducido después de su par no sincronizada)

+0

'StringTokenizer', aunque no está en desuso, también es un" legado " clase que se conserva por razones de compatibilidad, aunque se desaconseja su uso en el nuevo código ". http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html – Henning

+0

@Henning, gracias por anotar: actualicé mi respuesta para incluir esto. –

5
  • StringBuffer está diseñado para ser seguro para subprocesos y todos los métodos públicos en StringBuffer están sincronizados. StringBuilder no maneja el problema de seguridad de subprocesos y ninguno de sus métodos está sincronizado.

  • StringBuilder tiene un mejor rendimiento que StringBuffer en la mayoría de los casos.

  • Utilice el nuevo StringBuilder siempre que sea posible.

Here es performance comparison de StringBuilder & StringBuffer

StringBuilder & StringBuffer Sostiene cadena donde la clase StringoTokeizer permite que una aplicación para romper una cadena en tokens .. Así es como impar hacia fuera

3

StringBuffer.
StringTokenizer se utiliza para dividir la cadena en tokens en función de algunos delimitadores.

+0

¿No sería más simple y más claro decir "StringBuilder es la versión no sincronizada de StringBuffer"? –

+0

Estoy trabajando mucho en Java anterior a 1.5 donde no había StringBuilder, entonces mi punto de referencia es StringBuffer :-) – Gadolin

+0

@Peter Török: No. Es perfectamente simple y claro como es, y también da una perspectiva histórica, que tuyo no tiene – EJP

1

StringBuffer sirve mismo propósito que StringBuilder excepto que StringBuffer es thread-safe -

Cuestiones relacionadas