2010-05-12 13 views
13

este código:¿Por qué el método concat() de Java no hace nada?

String s = "TEST"; 
String s2 = s.trim(); 

s.concat("ING"); 
System.out.println("S = "+s); 
System.out.println("S2 = "+s2); 

resultados en esta salida:

S = TEST 
S2 = TEST 
BUILD SUCCESSFUL (total time: 0 seconds) 

¿Por qué son "prueba" y "ING" no concatena juntos?

+2

Enlace a la documentación: http://java.sun.com/j2se/1.4.2/docs/api/java/ lang/String.html # concat% 28java.lang.String% 29 –

+0

El mismo motivo 'trim()' no hace nada. – shmosel

Respuesta

41

una cadena es immutable, lo que significa que no se puede cambiar una cadena en Java. concat() devuelve una cadena nueva, concatenada.

String s = "TEST"; 
String s2 = s.trim(); 
String s3 = s.concat("ING"); 

System.out.println("S = "+s); 
System.out.println("S2 = "+s2); 
System.out.println("S3 = "+s3); 
+0

Gracias ... mi duda se aclaró .. :) –

+3

@ sema sema, si esta respuesta resolvió su pregunta, debe aceptarla. –

8

Dado que String es inmutable, la clase String no contiene métodos que modifiquen el contenido del objeto String. El método concat() devuelve un nuevo String que contiene el resultado de la operación. En lugar de esto:

s.concat("ING"); 

Prueba esto:

s = s.concat("ING"); 
+0

yup..its trabajando de esta manera..thanku .. –

3

Creo que lo que quiere hacer es:

s2 = s.concat("ING"); 

La función concat no cambia la cadena s, simplemente devuelve S, con el argumento anexa.

2

concat devuelve una cadena, por lo que básicamente está llamando a concat sin almacenar lo que devuelve. Prueba esto:

String s = "Hello"; 
String str = s.concat(" World"); 
System.out.println(s); 
System.out.println(str); 

debe imprimir:

Hello 
Hello World 
0

As String es inmutable cuando concat() se llama en cualquier cadena obj como

cadena s = "abc"; new String obj se crea en String pool ref por s

s = s.concat ("def"); aquí se crea una más obj de cadena con val abcdef y referenciada por s

1

.concat() método devuelve un nuevo valor concatenado. allí lo hizo s.concat("ING") -> esto le da valor de retorno "Prueba". Pero debes recibirlo en la variable declarada.

Si lo hizo s=s.concat("ING"); entonces el valor de "s" se convertirá en "PRUEBAS"

Cuestiones relacionadas