[Java Bronze] 5 Probleme zu beachten

Einführung

Ich habe kürzlich die JavaBronze SE 7/8 Prüfung abgelegt. Ich werde die Probleme vorstellen, über die ich mir während des Studiums persönlich Sorgen gemacht habe.

1. Frage. Kompatibilität zwischen int-Typ und char-Typ

public class Q1 {

	public static void main(String[] args) {
		char chr = 65;
		int num = 'A';
		Q1 q1 = new Q1();
		q1.func1(chr, num);
	}

	void func1(char chr, int num) {
		System.out.println("chr:" + chr);
		System.out.println("num:" + num);
	}
}

Welche Konsequenzen hat das Kompilieren dieses Codes? Bitte wählen Sie eine aus.

A. chr: A
num: 65
B. Kompilierungsfehler tritt auf
C. Laufzeitfehler tritt auf
D. Es wird nichts angezeigt

Kommentar

Die primitiven Typen int und char sind kompatibel und ermöglichen implizites Casting. Wenn Sie den int-Typ einer Variablen vom Typ char zuweisen, wird das der ASCII-Codetabelle entsprechende Zeichen zugewiesen. Wenn Sie dagegen den Zeichentyp einer Variablen vom Typ int zuweisen, wird die diesem Zeichen entsprechende Dezimalzahl zugewiesen.

Richtige Antwort: A.

2. Frage: Inkrementierungsoperator und Dekrementierungsoperator

public class Q2 {

	public static void main(String[] args) {
		int num = 1;
		System.out.print(++num + num++ + --num + num--);
	}
}

Welche Konsequenzen hat das Kompilieren dieses Codes? Bitte wählen Sie eine aus.

A.4
B.6
C.7
D.8

Kommentar

++ num wird als 2 berechnet, num ++ wird als 2 berechnet, --num wird als 2 berechnet und num-- wird als 2 berechnet, für insgesamt 8. Es ist zu beachten, dass num ++ als 2 berechnet und dann auf 3 erhöht wird Kurz danach wird es um --num auf 2 dekrementiert. Wenn sich dieselbe Variable auf der rechten Seite befindet, spiegeln die nachfixierten Inkrementierungs- und Dekrementierungsoperatoren die Verarbeitung für diese Variable wider.

Richtige Antwort: D.

3. Frage Endlosschleife und Laufzeitfehler

public class Q3 {

	public static void main(String[] args) {
		char[] chr = { 'A', 'B', 'C' };
		while (true)
			for (int i = 0; i <= chr.length; i++)
				System.out.println(chr[i]);
	}
}

Welche Konsequenzen hat das Kompilieren dieses Codes? Bitte wählen Sie eine aus.

A. Die Ausführung endet normal
B. Endlosschleife tritt auf
C. Kompilierungsfehler tritt auf
D. Laufzeitfehler tritt auf

Kommentar

In der while-Anweisung tritt eine Endlosschleife auf, und in der for-Anweisung tritt ein Laufzeitfehler (ArrayIndexOutOfBoundsException) auf. Wenn jedoch ein Laufzeitfehler in der for-Anweisung auftritt, selbst wenn diese gerade ausgeführt wird Der Prozess wird zur Hälfte gestoppt und als Laufzeitfehler ausgegeben. Wenn diese gleichzeitig auftreten, wird die Möglichkeit bestimmt, dass sie in der folgenden Reihenfolge auftreten.

  1. Kompilierungsfehler
  2. Laufzeitfehler
  3. Endlosschleife
  4. Erfolgreiche Ausführung

Richtige Antwort: D.

4. Frage: Beziehung überschreiben

class Super {
	static void func(String str) {
	}
}
class Sub extends Super {
	String str;
	void func(String str) {
		this.str = str;
	}
	void print() {
		System.out.println(str);
	}
}
public class Q4 {
	public static void main(String[] args) {
		Sub sub = new Sub();
		sub.func("Hello World");
		sub.print();
	}
}

Welche Konsequenzen hat das Kompilieren dieses Codes? Bitte wählen Sie eine aus.

A. Hallo Welt
B. Ein Kompilierungsfehler tritt auf
C. Ein Laufzeitfehler tritt auf
D. Es wird nichts angezeigt

Kommentar

Die func-Methode der Super-Klasse wurde von der func-Methode der Sub-Klasse überschrieben. Da sie jedoch statisch qualifiziert ist, tritt ein Kompilierungsfehler auf. Es ist wichtig zu beachten, dass das Problem darin besteht, dass Sie den Fehler nicht bemerken, wenn Sie die Hauptmethode verfolgen. Wir müssen uns auf die Methoden konzentrieren, die sich auf Überschreibungen von Ober- und Unterklassen beziehen, nicht auf die Verarbeitung der Hauptmethode.

Richtige Antwort: B.

5. Frage. Klassenart gegossen

class Super {
	void print() {
		System.out.println("Hello World");
	}
}

class Sub extends Super {
}

public class Q5 {
	public static void main(String[] args) {
		Sub sub;
		Super spr;
		sub = new Sub();
		spr = sub;
		sub = spr;
		sub.print();
	}
}

Welche Konsequenzen hat das Kompilieren dieses Codes? Bitte wählen Sie eine aus.

A. Hallo Welt
B. Ein Kompilierungsfehler tritt auf
C. Ein Laufzeitfehler tritt auf
D. Es wird nichts angezeigt

Kommentar

In der Zeile spr = sub;, die dem Unterklassentyp → Oberklassentyp zugeordnet ist, tritt kein Fehler auf. In der Zeile sub = spr;, die dem Oberklassentyp → Unterklassentyp zugeordnet ist, tritt ein Kompilierungsfehler auf.

Für grundlegende Datentypen ist eine explizite Umwandlung erforderlich, wenn einer kleinen Variablen eine große Variable zugewiesen wird.

Beispiel)
double double_01 = 100.0;
int int_01 = double_01;      //Implizite Besetzung(Fehler tritt auf)
int int_01 = (int)double_01;     //Explizite Besetzung(Es tritt kein Fehler auf)

Dann tritt im Fall eines Klassentyps, selbst wenn er einem Unterklassentyp zugewiesen ist, der ein großer Typ ist (Superklasse + Differenzklasse) → eine Superklasse, die ein kleiner Typ ist (nur Superklasse), kein Fehler auf und umgekehrt?

Der Grund dafür ist, dass der Compiler die Kompilierung auf Typkompatibilität überprüft, um festzustellen, ob es sich um einen Fehler handelt. Bei Basisdaten wird die Kompatibilität anhand der Größe des Typs beurteilt, bei Klassentypen anhand des Inhalts der Klasse.

Die Unterklasse sagt, von welcher Oberklasse sie erbt, aber die Oberklasse sagt nicht, von welcher Unterklasse sie erbt.

Wenn Sie einer Unterklasse eine Oberklasse zuweisen, wird daher kein Fehler angezeigt, da Sie die Kompatibilität kennen. Wenn Sie einer Oberklasse jedoch eine Unterklasse zuweisen, kennen Sie die Kompatibilität nicht. Wenn Sie sie also nicht explizit umwandeln, wird ein Kompilierungsfehler angezeigt. Es wird sein.

Richtige Antwort: B.

abschließend

Was haben Sie gedacht. Dies ist perfekt für die Prüfungsvorbereitung! !! !! Vielleicht \ _ (: 3 "∠) \ _

Recommended Posts

[Java Bronze] 5 Probleme zu beachten
Denken wir daran, was in Java 9 neu ist
Dinge, die Sie beachten sollten, wenn Sie sich für CRuby entscheiden
Dinge, die zu beachten sind, wenn der Abhängigkeit Krieg hinzugefügt wird
Dinge, die Sie bei der Verwendung der if-Anweisung beachten sollten
Beachten Sie beim Testen privater Methoden in JUnit
Multithreaded passend zur [Java] Vorlage
Wie man JAVA in 7 Tagen lernt
Protokollausgabe in Datei in Java
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Versuchen Sie, Yuma in Java zu implementieren
So verketten Sie Zeichenfolgen mit Java
So implementieren Sie den Kalman-Filter mit Java
Versuchen Sie, Project Euler in Java zu lösen
Einfach, Slack Bot mit Java zu machen
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie, n-ary Addition in Java zu implementieren
Ändern Sie die Liste <Optional <T >> in Java in Optional <Liste <T >>
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
Einbetten von Janus Graph in Java
So erhalten Sie das Datum mit Java
Fügen Sie Word-Dokumenten in Java Fußnoten hinzu
Beispiel zum Entpacken einer gz-Datei in Java
Von Java nach C und von C nach Java in Android Studio
Fügen Sie dem Cookie in Java das SameSite-Attribut hinzu
Beachten Sie Folgendes, wenn Sie Apache PDFBox® mit AWS Lambda verwenden
Richten Sie eine Java-GUI in einem separaten Thread ein, um die Haupt-GUI beizubehalten
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
Partisierung in Java
Ich möchte eine E-Mail in Java senden.
CORBA scheint in Java SE 11 entfernt zu sein. .. ..
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Änderungen in Java 11
Festlegen des HTTP-Keep-Alive-Timeouts im Java-HTTP-Client
Janken in Java
So erhalten Sie eine Klasse von Element in Java
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
So verbergen Sie Nullfelder als Antwort in Java
Bibliothek "OSHI" zum Erfassen von Systeminformationen mit Java
[Java] Einführung in Java
Ich habe versucht, neunundneunzig in Java auszugeben
Einführung in Java
So lösen Sie Ausdrucksprobleme in Java
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Umfangsrate in Java
Wie schreibe ich Java String # getBytes in Kotlin?
FizzBuzz in Java
Punkte, die bei Java beachtet werden müssen, sind gleich
N Dinge, die Sie beim Lesen von "Einführung in den Frühling" und "Einführung in den Frühling" in der Reiwa-Ära beachten sollten
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
Beispielcode zum Konvertieren von List in List <String> in Java Stream
Ich möchte so etwas wie "cls" in Java machen
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
# 2 [Anmerkung] Ich habe versucht, neunundneunzig mit Java zu berechnen.