## Los Strings y el Compilador de Java

El compilador de Java utiliza las clases String y StringBuffer detrás de la escena para manejar las cadenas literales y la concatenación.

### Cadenas Literales

> En Java se deben especificar las cadenas literales entre comillas:

>     "Hola Mundo!"

> Se pueden utilizar cadenas literales en cualquier lugar donde se pueda utilizar un objeto String. Por ejemplo, System.out.println() acepta un argumenteo String, por eso se puede utilizar una cadena literal en su lugar:

>     System.out.println("Hola Mundo!");

> También se pueden utilizar los métodos de String directamente desde una cadena literal:

>     int len = "Adios Mundo Cruel".length();

> Como el compilador crea automáticamente un nuevo objeto String para cada cadena literal que se encuentra, se puede utilizar una cadena literal para inicializar un String:

>     String s = "Hola Mundo";

> El constructor anterior es equivalente pero mucho más eficiente que este otro, que crea dos objetos String en vez de sólo uno:

>     String s = new String("Hola Mundo");

> El compilador crea la primera cadena cuando encuentra el literal "Hola Mundo!", y la segunda cuando encuentra new String().

### Concatenación y el Operador +

> En Java, se puede utilizar el operador `+` para unir o concatenar cadenas:

>     String cat = "cat";
>     System.out.println("con" + cat + "enacion");

> Esto decepciona un poco porque, como ya se sabe, los Strings no puden modificarse. Sin embargo detrás de la escena el compilador utiliza StringBuffer para implementar la concatenación. El ejemplo anterior se compilaría de la siguiente forma:

>     String cat = "cat";
>     System.out.println(new StringBuffer().append("con").append(cat).append("enation"));

> También se puede utilizar el operador `+` para añadir valores a una cadena que no son propiamente cadenas:

>     System.out.println("Java's Number " + 1);

> El compilador convierte el valor no-cadena (el entero `1` en el ejemplo anterior) a un objeto String antes de realizar la concatenación.

Ozito