2010-05-12 7 views
13

Dieser Code:Warum macht die concat() - Methode von Java nichts?

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

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

Ergebnisse in dieser Ausgabe:

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

Warum sind "TEST" und "ING" nicht miteinander verkettet?

+2

Link zur Dokumentation: http://java.sun.com/j2se/1.4.2/docs/api/java/ lang/String.html # concat% 28java.lang.String% 29 –

+0

Der gleiche Grund 'trim()' macht nichts. – shmosel

Antwort

41

ein String immutable ist, das heißt, Sie nicht einen String in Java ändern können. concat() gibt eine neue verkettete Zeichenfolge zurück.

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

Danke..mein Zweifel wurde geklärt .. :) –

+3

@soma sekhar, wenn diese Antwort Ihre Frage gelöst, sollten Sie es akzeptieren. –

8

Da String unveränderlich ist - Klasse String enthält keine Methoden, die den Inhalt des String Objekts selbst ändern. Die Methode concat() gibt eine neue String zurück, die das Ergebnis der Operation enthält. Statt dessen:

s.concat("ING"); 

Versuchen Sie folgendes:

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

yup..its arbeiten auf diese Weise..thanku .. –

3

Ich denke, was Sie tun möchten, ist:

s2 = s.concat("ING"); 

Die concat-Funktion nicht die Zeichenfolge s nicht ändert, ist es nur kehrt mit dem Argument angehängt.

2

concat gibt einen String zurück, so dass Sie im Prinzip concat aufrufen, ohne zu speichern, was zurückgegeben wird. Try this:

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

Sollte drucken:

Hello 
Hello World 
0

As String unveränderlich ist, wenn concat() auf jeden String obj als

String s = "abc" genannt wird; new String obj wird in String pool erstellt ref von s

s = s.concat ("def"); hier noch ein String obj mit val abcdef wird erstellt und referenziert von s

1

.concat() Methode gibt neuen verketteten Wert zurück. dort haben Sie s.concat("ING") -> dies gibt den Rückgabewert "Testing". Aber Sie müssen es in deklarierter Variable erhalten.

Wenn Sie s=s.concat("ING"); tat dann der Wert von „s“ wird in „PRÜFUNG“ ändern