Java:
public static void main(String[] args) {
String a1 = "foo";
String a2 = a1;
testStrings( "a1, a2" , a1 , a2);
String a3 = "foo";
testStrings( "a1, a3" , a1 , a3);
String a4 = new String( "fo" )+"o";
testStrings( "a1, a4" , a1 , a4);
String a5 = a4.intern();
testStrings( "a1 a5" , a1 , a5);
}
static void testStrings( String info,String a,String b) {
System.out.println( info );
System.out.printf( "<%s>.equals(<%s>) -> %s\n",a,b,a.equals(b));
System.out.printf( "<%s>==<%s> -> %s\n\n",a,b, a== b);
}
Es wir a1 als Typ String (Zeichenkette) deklariert mit den Anfangswert foo. Nun wir a2 ebenfalls als Typ string deklariert und ihn auch den Anfangswert foo zugewiesen.
Was wird bei testStrings( "a1, a2" , a1 , a2); gemacht?
Nun wird a3 als String deklariert mit dem gleichen Anfangswert foo wie a1.
Ein Literal "foo" wird definiert und ein neues String a4 wird definiert. a1 und a4 haben den selben Wert, aber bei a4 handelt es sich um 2 strings und nicht einen.
Nunwird ein neuer String deklariert, der denselben Wert wie der String a4 hat, so dass kein weiterer Speicherplatz für die Zeichen benötigt wird schreibt man es mit intern.
2Teil weiß ich nur:
%s .. Platzhalter für ein String
equals..Führt einen inhaltlichen Vergleich durch und liefert True, wenn beide beteiligten Objekte gleich sind.
\n .. Neue Zeile
printf .. ist auch klar
Was heißt <&s> mit den Relationszeichen?
Wir haben b doch gar nicht definiert?
Mir ist das proramm noch nicht ganz klar!
Zuletzt bearbeitet von einem Moderator: