Calificación:
  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
A nadie le importa una mierda, pero... v12
(10-19-2011, 08:56 AM)Reboot escribió: El problema es que usáis la clase equivocada. Si queréis trabajar con cadenas no tenéis que usar String, sino Stringbuffer.

Cuando añadís o substraéis caracteres a un String, el compilador hace lo siguiente:

String -> [new] Stringbuffer -> [Operaciones] -> [new] String

Porque el objeto String es inmutable, ya que la clase nativa es char y String es un array de chars, mientras que Stringbuffer es un vector.
Es lo que trato de explicar desde hace 1 página, pero no leeis... Forever Alone, aparte de comentar que si no hay multiples hilos StringBuilder es ligeramente mejor ( Forever Alone x 2 )

(10-19-2011, 08:56 AM)Reboot escribió: Cuando haces.
Código:
String hola= "hOla".toUpperCase(); // "HOLA"

El compilador crea el String "hOla", lo convierte a buffer, lo modifica a HOLA y lo vuelve a convertir a String.
Si tomas la costumbre de usar siempre Stringbuffer te ahorras dos objetos y dos casts.
Era una forma de demostrale a EmuAGR, que un literal de cadena es un objeto de la clase String y como tal puedes usar sus métodos sobre él. Puedes poner cualquier otro ejemplo.


EmuAGR escribió:He ahí una inconsistencia de Java. String es un objeto, debería declararse como tal usando el constructor adecuadamente y no como un tipo simple.
Por poder se puede continuar viendo cosas raras ad infinitum (a Java y a todos los lenguajes), pero IMHO obligar a hacer new con literales de cadena:
a ) Sería una chapuza obligar a hacerlo siempre, new String (String) "copia" contenido. Lo tienes en un sitio y es inmutable, pa' qué mas (salvo los casos concretos para aligerar el GC).
b ) Es lo mismo de antes, es por estar pensando que un literal es un tipo simple como los char* de C. ¡El propio literal es un objeto!, ¡el compilador lo ve como un objeto!, sólo hay que pensar en él como tal.
c ) Java permite que todas las clases que mapean tipos simples (Char, Integer, Double, etc) admiten instanciación desde sus tipos de datos simples. De pensar que b ) es una inconsistencia del lenguaje, c ) viene a uniformizarlo.

No trabajo con .NET, sólo he leido cosas de pasada, a ver si alguien sabe concretar este punto, pero creo que salvo el punto c ) estos lenguajes se comportan como Java porque supone una ventaja evidente.

Pero podemos hablar de ponis y que Frikitty haga flame lulz (lo de los ponis va en serio, le pega a Java XD)


[Imagen: IUmqKJR.png]






Mensajes en este tema
Post Reply - por Fatimasiddd - 11-07-2011, 02:14 AM
RE: Post Reply - por Reboot - 11-07-2011, 09:32 AM
RE: A nadie le importa una mierda, pero... v12 - por Yumichan - 10-19-2011, 09:28 AM

Salto de foro:


Usuarios navegando en este tema: 27 invitado(s)