logo

Výstup programu Java | Súprava 7

Úroveň obtiažnosti: Stredne pokročilý Predpovedať výstup nasledujúcich programov 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();  } } 
Možnosti : Odpoveď: A) 20 vysvetlenie: Tu je názov premennej inštancie triedy (num) rovnaký ako calc() calc() metóda toto používa sa kľúčové slovo. Takže vo vyhlásení this.num = num * 10 v a predstavuje lokálnu premennú metódy, ktorej hodnota je 2 a toto.č predstavuje premennú inštancie triedy, ktorej počiatočná hodnota je 100. Teraz in printNum() metóda, pretože nemá žiadnu lokálnu premennú, ktorej názov je rovnaký ako premenná inštancie triedy, takže ju môžeme priamo použiť v a toto.č možno použiť.   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;  } } 
Možnosti : A) Výstup je pravdivý a MyStuff spĺňa zmluvu Object.equals(). B) Výstup je nepravdivý a MyStuff spĺňa zmluvu Object.equals(). C) Výstup je pravdivý a MyStuff NESpĺňa zmluvu Object.equals(). D) Výstup je nepravdivý a MyStuff NESPLŇUJE zmluvu Object.equals(). odpoveď: C) Výstup je pravdivý a MyStuff NESpĺňa zmluvu Object.equals(). vysvetlenie: Ako rovná sa (objekt objektu) metóda v triede Object porovnáva dva objekty na základe vzťahu ekvivalencie. Ale tu len potvrdzujeme, že objekt je nulový alebo nie, takže nespĺňa Object.equals() zmluvy. Ako m1 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();  } } 
Možnosti : A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b odpoveď: A) alfa beta b b vysvetlenie: Vyhlásenie nová beta().go() vykonáva v dvoch fázach. V prvej fáze Beta volá sa konštruktor triedy. Nie je prítomný žiadny člen inštancie Beta trieda. Takže teraz Beta vykoná sa konštruktor triedy. Ako Beta trieda sa rozširuje Alfa trieda tak zavolajte na Alfa konštruktor triedy ako prvý príkaz štandardne (uložené kompilátorom) je super() v Beta konštruktor triedy. Teraz ako jedna premenná inštancie ( typu ) je prítomný v Alfa triedy tak to dostane pamäť a hneď Alfa konštruktor triedy sa vykoná a potom sa zavolá návrat na Beta ďalší príkaz konštruktora triedy. Takže alfa beta je vytlačený. V druhej fáze ísť () typu a . Takže sa to zmení na b a vytlačené dvakrát. The super kľúčové slovo tu je to nanič.   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);  } } 
Možnosti : A) -1 B) 3 C) 4 D) A je vyhodený za behu. odpoveď: C) 4 vysvetlenie: pripojiť (string reťazec) s1 . The podreťazec (int index) metóda vráti reťazec z daného indexu na koniec. Ale keďže neexistuje žiadna premenná typu String na uloženie vrátených reťazcov, bude zničená. Teraz indexOf(String s2) s2 . So 4 is printed as 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();  } } 
Možnosti : A) Písanie... B) Kniha písania C) Zápis kódu D) Kompilácia zlyhá odpoveď: B) Písanie knihy vysvetlenie: Keďže statické metódy nemožno prepísať, nezáleží na tom, ktorý objekt triedy sa vytvorí. Ako a je a Autor odkazovaný typ tak vždy Autor nazýva sa metóda triedy. Ak odstránime písať () metóda od Autor trieda potom Spisovateľ metóda triedy sa nazýva ako Autor trieda sa rozširuje Spisovateľ trieda.