2010-05-12 18 views
13

Ce code:Pourquoi la méthode concat() de Java ne fait rien?

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

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

résultats dans cette sortie:

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

Pourquoi sont "TEST" et "ING" ne concaténés?

+2

Lien vers la documentation: http://java.sun.com/j2se/1.4.2/docs/api/java/ lang/String.html # concat% 28java.lang.String% 29 –

+0

La même raison 'trim()' ne fait rien. – shmosel

Répondre

41

une chaîne est immutable, ce qui signifie que vous ne pouvez pas changer une chaîne en Java. concat() renvoie une nouvelle chaîne concaténée.

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

Merci .. mon doute a été clarifié .. :) –

+3

@soma sekhar, si cette réponse a résolu votre question, vous devez l'accepter. –

8

Parce que String est immuable - la classe String ne contient pas de méthodes qui modifient le contenu de l'objet String lui-même. La méthode concat() renvoie un nouveau String qui contient le résultat de l'opération. Au lieu de cela:

s.concat("ING"); 

Essayez ceci:

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

yup..its de travail de cette manière..thanku .. –

3

Je pense que ce que vous voulez faire est:

s2 = s.concat("ING"); 

La fonction concat ne change pas la chaîne s, il retourne juste s avec l'argument en annexe.

2

concat renvoie une chaîne, vous appelez donc la concatation sans stocker ce qu'elle renvoie. Essayez ceci:

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

Si imprimer:

Hello 
Hello World 
0

As String est immuable quand concat() est appelée sur une chaîne obj comme

String s = "abc"; new String obj est créé dans String pool ref par s

s = s.concat ("def"); ici un autre String obj avec val abcdef est créé et référencé par s

1

.concat() retourne une nouvelle valeur concaténée. là vous l'avez fait s.concat("ING") -> ceci donne la valeur de retour "Testing". Mais vous devez le recevoir dans une variable déclarée.

Si vous avez s=s.concat("ING"); la valeur de « s » se transforme en « TEST »