logo

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.