Dane wyjściowe programu Java | Zestaw 7

Poziom trudności: Średniozaawansowany Przewiduj wynik następujących programów Java. Program 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  ();      }   }   
Opcje: A) 20 B) 100 C) 1000 D) 2 Odpowiedź: A) 20 Wyjaśnienie : Tutaj zmienna instancji klasy name(num) jest taka sama jak oblicz() metoda nazwa zmiennej lokalnej (liczba). Tak więc, aby odwoływać się do zmiennej instancji klasy z oblicz() metoda Ten używane jest słowo kluczowe. Tak w oświadczeniu this.num = liczba * 10 w reprezentuje zmienną lokalną metody, której wartość wynosi 2 i ten.num reprezentuje zmienną instancji klasy, której wartość początkowa wynosi 100. Teraz w drukujNum() metodę, ponieważ nie ma ona zmiennej lokalnej, której nazwa jest taka sama jak zmienna instancji klasy, więc możemy jej bezpośrednio użyć w aby odwołać się do zmiennej instancji ten.num można używać.   Program 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  ;      }   }   
Opcje: A) Wynik ma wartość true i MyStuff spełnia umowę Object.equals(). B) Wynik ma wartość false i MyStuff spełnia umowę Object.equals(). C) Dane wyjściowe mają wartość true i MyStuff NIE spełnia umowy Object.equals(). D) Dane wyjściowe mają wartość false i MyStuff NIE spełnia umowy Object.equals(). Odpowiedź : C) Dane wyjściowe mają wartość true i MyStuff NIE spełnia umowy Object.equals(). Wyjaśnienie : Jak równa się (obiekt obiektu) Metoda w klasie Object porównuje dwa obiekty na podstawie relacji równoważności. Ale tutaj tylko potwierdzamy, że obiekt ma wartość null lub nie. Zatem nie jest spełniony Obiekt.równa() umowa. Jak m1 nie jest null true zostanie wydrukowane.   Program 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  ();      }   }   
Opcje: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Odpowiedź : A) alfa beta b b Wyjaśnienie : Oświadczenie nowa wersja Beta().go() przebiega w dwóch fazach. W pierwszej fazie Beta wywoływany jest konstruktor klasy. Żaden członek instancji nie jest obecny w Beta klasa. Więc teraz Beta wykonywany jest konstruktor klasy. Jak Beta klasa się wydłuża Alfa zajęcia, więc zadzwoń do Alfa konstruktor klasy jako pierwsza instrukcja domyślnie (ustawiona przez kompilator) to Super() w Beta konstruktor klasy. Teraz jako jedna zmienna instancji ( typ ) jest obecny w Alfa class, więc dostanie pamięć i teraz Alfa zostanie wykonany konstruktor klasy, a następnie wywołana funkcja return to Beta następna instrukcja konstruktora klasy. Więc alfa beta jest drukowany. W drugiej fazie Iść() metoda jest wywoływana na tym obiekcie. Ponieważ istnieje tylko jedna zmienna ( typ ) w obiekcie, którego wartość wynosi A . Więc zostanie zmieniony na B i wydrukowano dwukrotnie. The super słowo kluczowe tutaj nie ma sensu.   Program 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  );      }   }   
Opcje: A) -1 B) 3 C) 4 D) A Wyjątek StringIndexOutOfBounds jest zgłaszany w czasie wykonywania. Odpowiedź : C) 4 Wyjaśnienie : dołącz (String str) metodapołącz str z s1 . The podciąg (indeks int) metoda zwraca ciąg znaków z podanego indeksu na koniec. Ponieważ jednak nie ma żadnej zmiennej typu String przechowującej zwrócony ciąg znaków, zostanie on zniszczony. Teraz indeksOf(String s2) metoda zwraca indeks pierwszego wystąpienia s2 . Zatem 4 jest drukowane jako s1='JavaLove'.   Program 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  ();      }   }   
Opcje: A) Pisanie... B) Pisanie książki C) Pisanie kodu D) Kompilacja kończy się niepowodzeniem Odpowiedź : B) Pisanie książki Wyjaśnienie : Ponieważ metod statycznych nie można zastąpić, nie ma znaczenia, który obiekt klasy zostanie utworzony. Jak A jest Autor typ odniesienia, więc zawsze Autor wywoływana jest metoda klasowa. Jeśli usuniemy pisać() metoda z Autor wtedy klasa Pisarz Metoda klasowa nazywa się Autor klasa się wydłuża Pisarz klasa.