Frage
Was ist die Ausgabe, wenn folgende Anweisungen ausgeführt werden?
Boolean b1 = new Boolean( true ); Boolean b2 = new Boolean( true ); Object obj1 = (Object)b1; Object obj2 = (Object)b2; if ( obj1 == obj2 ) if ( obj1.equals(obj2) ) System.out.println( "a" ); else System.out.println( "b" ); else if ( obj1.equals(obj2) ) System.out.println( "c" ); else System.out.println( "d" );
- a
- b
- c
- d
Die Ausgabe des Programms ist „c“, daher ist Antwort C korrekt. Da die Objektreferenz obj1 und obj2 nicht gleich sind, da sie auf verschiedene Boolean Objekte zeigen, kann die Ausgabe nicht „a“ oder „b“ sein. Da jedoch die equals() Methode den Wert (true) vergleicht, und beide Objekte den gleichen Wert haben, ist die Ausgabe „c“.
Frage
Analysiere die beiden Quellcodezeilen:
float f = 3.2; int i = f;
- Dieses Programmstück wird nicht kompiliert
- Dieses Programmstück lässt sich kompiliert und i erhält der Wert 3
- Die zweite Zeile würde sich kompilieren lassen, wenn dort stände:
int i = (byte) f;
- Die erste Zeile ließe sich kompilieren, wenn wir schreiben würden:
float f = 3.2f;
Das Programm liefert beim Kompilieren eine Fehlermeldung, die besagt, dass der Datentyp float nicht mit double kompatibel ist. Der Datentyp double umfasst einen größeren Zahlenbereich und 3.2 ist als Literal automatisch ein double. Also ist A korrekt und B falsch. Der Fehler ist in der ersten Zeile ließe sich beheben, wenn man hinter dem 3.2 ein f hängt, wie es Lösung D vorschlägt. Somit ist D korrekt. Unabhängig von der erste Zeile ist auch mit der Typumwandlung auch die zweite Zeile richtig.
Frage
Welche der folgenden Anweisungen sind korrekt?
- 128 >> 1 ergibt 64
- 128 >>> 1 ergibt 64
- 128 >> 1 ergibt –64
- 128 >>> 1 ergibt –64
Antworten A und B sind korrekt.
Frage
Welche der folgenden Anweisungen ergeben den Rückgabewert true?
- „ulli“ == „ulli“
- „ulli“.equals(„ulli“)
- „ulli“ = „ulli“
- „ulli“.equals(new Button(„ulli“))
Da sich die virtuelle Maschine gleiche Strings in einem Konstanten-Pool hält, ist Antwort A korrekt. Bei B wird ein Zeichen-zu-Zeichen Vergleich unternommen. Da beide Strings identisch sind, ist auch hier das Ergebnis true, also ist auch Antwort B wahr. Man sollte sich nur bewusst sein, dass bei A kein inhaltlicher Vergleich stattfindet. Antwort C ergibt einen Compilerfehler, da ein einfaches Gleichheitszeichen eine Zuweisung definiert. Auf der linken Seite darf aber kein Literal stehen. Somit kann C nicht richtig sein. Die equals Methode, die auf der String Klasse definiert ist, überschreibt die equals() Methode der Klasse Object. Sie erlaubt aber als Parameter nur String Objekte. Es ist nicht so, dass bei nicht-Sting Objekten die toString() Methoden aufgerufen wird. Der Rückgabewert ist false. Also ist auch D falsch.
Frage
Welche der Anweisungen führt nicht zu einem Kompilierfehler?
- „ulli“ + “ plus “ + “ plus“
- „ulli“ + 29
- 345 + 45
- 5 + 5.5
Keine der Anweisungen führen zu einem Laufzeitfehler. Also sind Antwort A, B, C und D korrekt.
Frage
Welche der folgenden logischen Operatoren nennen sich „short circuit“?
- &
- ||
- &&
- |
B und C sind die kurzen Operatoren, die dann gelten, wenn der entsprechende Teil gilt.
Frage
Welchen Wert enthält die Variable temp nach der Ausführung der beiden Zeilen?
long temp = (int) 3.9; temp %= 2;
- 0
- 1
- 2
- 3
- 4
Das Ergebnis ist 1, also die Antwort B wahr. Die Typumwandlung schneidet den Nachkommateil von 3.9 ab und das Ergebnis 3 Modulo 2 ist 1.
Frage
Welche Bildschirmausgabe erzeugt die folgende Anweisung?
System.out.println( 4 | 7 );
- 0
- 4
- 5
- 6
- 7
Die binäre Repräsentation der Zahl 4 ist 100 und von 7 ist 111. Beide mit Oder verknüpft gibt 111 und somit wiederum 7. Also ist Antwort E korrekt.
Ähnliche Beiträge
- Fragen zur Java-Zertifizierung, Standardklassen
- Fragen zur Java-Zertifizierung, Deklarationen und Zugriffskontrolle
- Fragen zur Java-Zertifizierung, Grundlegende Spracheigenschaften
- Fragen zur Java-Zertifizierung, Flusskontrolle und Ausnahmebehandlung
- Fragen zur Java-Zertifizierung, Flusskontrolle und Ausnahmebehandlung