Frage 1:
<code>public static void demo01() {<br> Integer f1 = 100, f2 = 100, f3 = 200, f4 = 200;<br> System.out.println(f1 == f2);<br> System.out.println(f3 == f4);<br>}</code>
Frage 2:
<code>private static Integer i;<br>public static void demo02() {<br> if (i == 0) {<br> System.out.println("A");<br> } else {<br> System.out.println("B");<br> }<br>}</code>
Frage 1 Antwort:
wahr
falsch
Frage 2 Antwort:
NullPointerException
Analyse:
Frage 1:
Das Folgende ist der Quellcode von „Autoboxing“ in der Integer-Klasse:
<code>public static Integer valueOf(int i) {<br> if (i >= IntegerCache.low && i <= IntegerCache.high)<br> return IntegerCache.cache[i + (-IntegerCache.low)];<br> return new Integer(i);<br>}<br></code>
Der Wert von IntegerCache.low beträgt -128 und der Wert von IntegerCache.high beträgt 127. Mit anderen Worten, wenn die Ganzzahl automatisch eingerahmt wird und der Bereich des Ganzzahlwerts als zwischen [-128,127] beurteilt wird, wird der Wert im Ganzzahlkonstantenpool direkt verwendet, wenn er nicht in diesem Bereich liegt, eine neue Ganzzahl () wird erstellt. Daher liegen f1 und f2 in dieser Frage beide im Bereich [-128.127] und verwenden denselben Wert im Konstantenpool. Allerdings liegen f3 und f4 nicht im Bereich von [-128,127] und ihre Werte sind beide neu, sodass f3 und f4 nicht dasselbe Objekt sind.
Frage 2:
Der Standardwert von Integer i ist null. Wenn i == 0 ausgeführt wird, ist die rechte Seite des Gleichheitszeichens eine Zahl. Um Vergleichsoperationen durchzuführen, wird Integer automatisch entpackt (dh Integer wird in den Typ int konvertiert). Wenn Sie null auspacken (null in eine Zahl umwandeln), wird natürlich eine NullPointerException gemeldet.
Das obige ist der detaillierte Inhalt vonAnalyse von Beispielfragen zur Java-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!