logo

Ausgabe des Java-Programms | Satz 7

Schwierigkeitsgrad: Mittelstufe Sagen Sie die Ausgabe der folgenden Java-Programme voraus. Programm 1: Java
public class Calculator {  int num = 100;  public void calc(int num) { this.num = num * 10; }  public void printNum() { System.out.println(num); }  public static void main(String[] args)  {  Calculator obj = new Calculator();  obj.calc(2);  obj.printNum();  } } 
Optionen: A) 20 B) 100 C) 1000 D) 2 Antwort: A) 20 Erläuterung : Hier ist der Name der Klasseninstanzvariablen (num) derselbe wie calc() Name der lokalen Variablen der Methode (Anzahl). Also zum Referenzieren der Klasseninstanzvariablen von calc() Verfahren Das Schlüsselwort verwendet wird. Also in der Aussage this.num = num * 10 in einem stellt eine lokale Variable der Methode dar, deren Wert 2 ist und diese.num stellt eine Klasseninstanzvariable dar, deren Anfangswert 100 ist. Jetzt in printNum() Methode, da sie keine lokale Variable hat, deren Name mit der Klasseninstanzvariablen übereinstimmt, sodass wir sie direkt verwenden können in einem um auf die Instanzvariable zu verweisen diese.num verwendet werden kann.   Programm 2: Java
public class MyStuff {  String name;  MyStuff(String n) { name = n; }  public static void main(String[] args)  {  MyStuff m1 = new MyStuff('guitar');  MyStuff m2 = new MyStuff('tv');  System.out.println(m2.equals(m1));  }  @Override  public boolean equals(Object obj)  {  MyStuff m = (MyStuff) obj;  if (m.name != null) { return true; }  return false;  } } 
Optionen: A) Die Ausgabe ist wahr und MyStuff erfüllt den Object.equals()-Vertrag. B) Die Ausgabe ist falsch und MyStuff erfüllt den Object.equals()-Vertrag. C) Die Ausgabe ist wahr und MyStuff erfüllt den Object.equals()-Vertrag NICHT. D) Die Ausgabe ist falsch und MyStuff erfüllt den Object.equals()-Vertrag NICHT. Antwort : C) Die Ausgabe ist wahr und MyStuff erfüllt den Object.equals()-Vertrag NICHT. Erläuterung : Als equal(Objekt obj) Die Methode in der Object-Klasse vergleicht zwei Objekte auf der Grundlage einer Äquivalenzbeziehung. Aber hier bestätigen wir nur, dass das Objekt null ist oder nicht. Es erfüllt also nicht die Anforderungen Object.equals() Vertrag. Als m1 ist nicht null true wird gedruckt.   Programm 3: Java
class Alpha {  public String type = 'a ';  public Alpha() { System.out.print('alpha '); } } public class Beta extends Alpha {  public Beta() { System.out.print('beta '); }  void go()  {  type = 'b ';  System.out.print(this.type + super.type);  }  public static void main(String[] args)  {  new Beta().go();  } } 
Optionen: A) Alpha Beta b b B) Alpha Beta a b C) Beta Alpha b b D) Beta Alpha a b Antwort : A) Alpha Beta b b Erläuterung : Die Aussage neue Beta().go() wird in zwei Phasen ausgeführt. In der ersten Phase Beta Der Klassenkonstruktor wird aufgerufen. Es ist kein Instanzmitglied vorhanden Beta Klasse. Also jetzt Beta Der Klassenkonstruktor wird ausgeführt. Als Beta Klasse erweitert Alpha Klasse, also Anruf geht an Alpha Der Klassenkonstruktor ist standardmäßig die erste Anweisung (vom Compiler gesetzt). super() im Beta Klassenkonstruktor. Jetzt als eine Instanzvariable( Typ ) ist vorhanden in Alpha Klasse, damit es Speicher bekommt und jetzt Alpha Der Klassenkonstruktor wird ausgeführt und dann „return to“ aufgerufen Beta Nächste Anweisung des Klassenkonstruktors. Also Alpha-Beta gedruckt wird. In der zweiten Phase gehen() Die Methode wird für dieses Objekt aufgerufen. Da es nur eine Variable gibt( Typ ) im Objekt, dessen Wert ist A . Es wird also geändert in B und zweimal gedruckt. Der Super-Schlüsselwort hier nützt es nichts.   Programm 4: Java
public class Test {  public static void main(String[] args)  {  StringBuilder s1 = new StringBuilder('Java');  String s2 = 'Love';  s1.append(s2);  s1.substring(4);  int foundAt = s1.indexOf(s2);  System.out.println(foundAt);  } } 
Optionen: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException wird zur Laufzeit geworfen. Antwort : C) 4 Erläuterung : append(String str) methodconcatenate the str to s1 . Der Teilzeichenfolge (int index) Die Methode gibt den String vom angegebenen Index bis zum Ende zurück. Da es jedoch keine String-Variable zum Speichern der zurückgegebenen Zeichenfolge gibt, wird diese jetzt zerstört indexOf(String s2) Die Methode gibt den Index des ersten Vorkommens von zurück s2 . Also wird 4 als s1='JavaLove' gedruckt.   Programm 5: Java
class Writer {  public static void write()  {  System.out.println('Writing...');  } } class Author extends Writer {  public static void write()  {  System.out.println('Writing book');  } } public class Programmer extends Author {  public static void write()  {  System.out.println('Writing code');  }  public static void main(String[] args)  {  Author a = new Programmer();  a.write();  } } 
Optionen: A) Schreiben... B) Schreiben eines Buches C) Schreiben von Code D) Kompilierung schlägt fehl Antwort : B) Schreibbuch Erläuterung : Da statische Methoden nicht überschrieben werden können, spielt es keine Rolle, welches Klassenobjekt erstellt wird. Als A ist ein Autor referenzierter Typ also immer Autor Klassenmethode aufgerufen wird. Wenn wir entfernen schreiben() Methode von Autor Klasse dann Schriftsteller Die Klassenmethode wird aufgerufen als Autor Klasse erweitert Schriftsteller Klasse.