Fragen zur Java-Zertifizierung, Grundlegende Spracheigenschaften

Frage

In welcher Reihenfolge können die folgenden Klassen in der Quelldatei gesetzt werden, ohne dass Fehler oder Warnungen zur Übersetzungszeit auftreten.

// A
 import java.applet.*;
// B
 class Helper { }
// C
 package myclasses;
// D
 public class MyApplet extends java.applet.Applet { }
  1. A, B, C, D
  2. A, C, B, D
  3. C, A, B, D
  4. C, A, D, B
  5. C, B, A, D

Befindet sich eine Klasse in einem Paket, so muss in der ersten Zeile die package Deklaration stehen. So sind Antworten A, B falsch. Anschließend müssen die Import Anweisungen folgen. So ist auch E falsch. Antworten C und D sind korrekt. Bei D würde aber ein extends Applet reichen.

Frage

Was ist die korrekte Reihenfolge für Importanweisungen, Klassen und Pakete, wenn diese in einer einzigen Datei vorkommen?

  1. Paketanweisung, Importanweisung, Klasse
  2. Klasse, Importanweisung, Paketanweisung
  3. Importanweisung, Paketanweisung, Klassen
  4. Paketanweisung, Klassen, Importanweisung

Die korrekte Antwort ist A.

Frage

Was sind gültige Schlüsselwörter in Java?

  1. sizeof
  2. abstract
  3. native
  4. NULL
  5. BOOLEAN
  6. goto

sizeof ist ein Operator in C(++), der in Java keine Bedeutung hat. Er kann daher ein kein gültiges Schlüsselwort. A ist flasch. abstract und native sind reservierte Schlüsselwörter, daher sind Antwort B und C richtig. NULL ist ein Makro unter C(++), welches in Java nicht existiert. Nur null ist ein eingebautes Schlüsselwort. Auch BOOLEAN ist kein Schlüsselwort, da Java Groß/Kleinschreibung trennt. So sind D und E keine Schlüsselwörter. Obwohl es in Java kein goto gibt (jedoch Multibreak continue, was im Prinzip das gleiche ist), ist das Schlüsselwort reserviert und man kann es nicht als Bezeichner wählen. Auch F ist richtig.

Frage

Welche der folgenden Bezeichner ist illegal?

  1. #_pound
  2. _underscore
  3. 4Interface
  4. Interface5
  5. _5_

Bezeichner dürfen nur mit einem Unterstrich oder einem Buchstaben beginnen. Demnach sind A und C illegale Bezeichner. Die anderen sind gültige Namen, es sind B, D und E korrekt.

Frage

Welche der folgenden Deklarationen für die main() Methode in einer Konsole Applikation ist nicht korrekt?

  1. public static void main()
  2. public static void main( String[] string )
  3. public static void main( String args )
  4. public static void main( String[] args )
  5. static void main( String[] args )

Die korrekte Signatur ist public static void main( String [] ). Also B und D korrekt, da es auf die Namensgebung nicht ankommt. Da die main() Funktion immer als Argument ein String Feld hat, ist A und C falsch. E ist im Prinzip richtig, jedoch wird mit public die main() Funktion auch außerhalb des Paketes sichtbar. Also ist auch E falsch.

Frage

Wie lautet die Spezifikation für den Paramter der pulic static void main Methode?

  1. String args []
  2. String [] args
  3. Strings args []
  4. String args

Als Parameter wird ein Feld von Strings erwartet. Also ist D falsch. Da die Klammern bei der Deklaration eines Feldes vor oder hinter dem Bezeichner stehen können und der Name des Feldes unerheblich ist, sind A, B und C richtige Antworten.

Frage

Was enthält das erste Erste Element des Stringfeldes, das der public static void main Methode übergeben wird.

  1. Der Name des Programms.
  2. Die Anzahl der Argumente.
  3. Das erste Argument falls verfügbar.

In Java gibt es keine zusammengebunden Programme, sondern nur Klassen. Daher ist A falsch. Die Anzahl der Argumente ergibt sich dem Attribut length der Feldvariablen. Es bleibt C als richtige Antwort.

Frage

Was ist das Ergebnis des folgenden Programmes:

public class Alter {
 public static void main( String args [] ) {
  int age;
  age = age + 1;
  System.out.println( "Das Alter ist " + age);
  }
 }
  1. Kompiliert und läuft ohne Ausgabe.
  2. Kompiliert und die Ausgabe ist „Das Alter ist 1“.
  3. Kompiliert aber erzeugt einen Laufzeitfehler.
  4. Kompiliert nicht.

Das Programm kann nicht kompiliert werden, da auf die lokale Variable age vor dem Lesezugriff kein Schreibzugriff stattfand. Da lokale Variablen aber vor der Benutzung initialisiert werden müssen, meldet der Compiler einen Fehler.

Frage

Was ist das Ergebnis des folgenden Programmcodes?

public class Alter {
 static int age;
 public static void main( String args [] ) {
  age = age + 1;
  System.out.println( "Das Alter ist " + age );
 }
}
  1. Kompiliert und läuft ohne Ausgabe
  2. Kompiliert und liefert die Ausgabe „Das Alter ist 1 „
  3. Kompiliert aber erzeugt einen Laufzeitfehler.
  4. Kompiliert nicht.

Das Programm kompiliert und schreibt das Alter 1 auf den Schirm. Die int Objektvariablen wird mit Null initialisiert. Es ist egal, ob sie dabei static ist oder nicht. Nach dem einmaligen Erhöhen wird sie auf 1 gesetzt. Also ist B die richtige Antwort.

Frage

Welche der folgenden Anweisungen ist korrekt, um ein Zeichenliteral mit dem Wert a zu erzeugen.

  1. ‚a‘
  2. „a“
  3. new Character(a)
  4. \000a

Nur Antwort A ist korrekt. Ein Zeichenliteral muss in einfachen Hochkommas stehen. Nur Zeichenkette, also String-Objekte, stehen in doppelten Anführungszeichen. String Objekte sind aber Objekte und keine primitiven Datentypen wie ein char. Antwort C ist falsch, da dort versucht wird ein Character Objekt zu konstruieren. Der new Operator erzeugt allerdings ein Objekt und kein Literal. Außerdem muss Buchstabe a in Hochkomma stehen. Sonst würde die Zeile auf eine char Variable a zurückgreifen. Das Zeichen \0000a ist die Hexadezimalschreibweise und steht für die Zahl 10. Also ist auch D falsch.

Frage

Wie ist der Zahlenbereich eines byte?

  1. 0 bis 65.535
  2. –128 bis 127
  3. –32.768 bis 32.767
  4. –256 bis 255

Ein byte hat die Datengröße von 8 Bit. So sind Antwort A und C schon falsch. Mit 8 Bit kann man den Zahlenbereich von 0 bis 255 abdecken. Ein Vorzeichen kostet aber noch ein zusätzliches Bit. So ist auch D falsch, da wir hier 9 Bit bräuchten. Da alle primitiven Datentypen außer char mit einem vorzeichenbehaftet sind, bleibt als richtige Antwort B.

Frage

Welche der Anweisungen ist illegal?

  1. int i = 32;
  2. float f = 45.0;
  3. double d = 45.0;

Die erste Anweisung ist korrekt, da 32 im Bereich eines int liegt. Auch Anweisung C ist korrekt. Nur bei B ist das Literal ein double. Dies kann nicht ohne möglichen Verlust in ein float kopiert werden. Also ist Antwort B korrekt. Um die Zeile zu korrigieren schreiben wie float f = 4.0f.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert