Java programos išvestis | 7 rinkinys

Sunkumo lygis: Vidutinis Numatykite šių Java programų išvestį. 1 programa: 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  ();      }   }   
Parinktys: A) 20 B) 100 C) 1000 D) 2 Atsakymas: A) 20 Paaiškinimas: Čia klasės egzemplioriaus kintamojo pavadinimas (skaičius) yra toks pat kaip calc () metodas vietinio kintamojo pavadinimas(skaičius). Taigi, norint nurodyti klasės egzempliorių kintamąjį iš calc () metodas tai naudojamas raktinis žodis. Taigi pareiškime tai.skaičius = skaičius * 10 a reiškia vietinį metodo kintamąjį, kurio reikšmė yra 2 ir tai.nr reiškia klasės egzempliorių kintamąjį, kurio pradinė reikšmė yra 100. Dabar į printNum() metodas, nes jis neturi vietinio kintamojo, kurio pavadinimas yra toks pat kaip klasės egzemplioriaus kintamasis, todėl galime naudoti tiesiogiai a nors nurodyti egzemplioriaus kintamąjį tai.nr galima naudoti.   2 programa: 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  ;      }   }   
Parinktys: A) Išvestis teisinga ir MyStuff atitinka Object.equals() sutartį. B) Išvestis klaidinga ir MyStuff atitinka Object.equals() sutartį. C) Išvestis yra teisinga ir MyStuff NEįvykdo Object.equals() sutarties. D) Išvestis klaidinga ir MyStuff NEįvykdo Object.equals() sutarties. Atsakymas : C) Išvestis yra teisinga ir MyStuff NEįvykdo Object.equals() sutarties. Paaiškinimas: Kaip lygus (objekto objektas) Objektų klasės metodas lygina du objektus, remdamasis lygiavertiškumo ryšiu. Bet čia mes tik patvirtiname, kad objektas yra niekinis arba ne. Taigi jis neatitinka Object.equals() sutartis. Kaip m1 nėra nulis true bus išspausdintas.   3 programa: 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  ();      }   }   
Parinktys: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Atsakymas : A) alfa beta b b Paaiškinimas: Pareiškimas nauja Beta().go() vykdoma dviem etapais. Pirmoje fazėje Beta vadinamas klasės konstruktorius. Nėra egzemplioriaus nario Beta klasė. Taigi dabar Beta vykdomas klasės konstruktorius. Kaip Beta klasė pratęsiama Alfa klasė, todėl skambutis į Alfa klasės konstruktorius kaip pirmasis sakinys pagal numatytuosius nustatymus (pateikiamas kompiliatoriaus). super () esančiame Beta klasės konstruktorius. Dabar kaip vieno egzemplioriaus kintamasis ( tipo ) yra Alfa klasė, todėl ji gaus atmintį ir dabar Alfa vykdomas klasės konstruktorius, tada iškviečiamas grįžti į Beta klasės konstruktoriaus kitas teiginys. Taigi alfa beta yra atspausdintas. Antrame etape eik () Šiam objektui iškviečiamas metodas. Kadangi yra tik vienas kintamasis ( tipo ) objekte, kurio vertė yra a . Taigi jis bus pakeistas į b ir atspausdinta du kartus. The super raktažodis čia jokios naudos.   4 programa: 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  );      }   }   
Parinktys: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException yra išmestas vykdymo metu. Atsakymas : C) 4 Paaiškinimas: pridėti (String str) metodas sujungti str prie s1 . The poeilutė (int index) metodas grąžina eilutę nuo nurodyto indekso iki galo. Tačiau kadangi nėra jokio eilutės kintamojo, kuriame būtų saugoma grąžinta eilutė, ji bus sunaikinta. Dabar indexOf (eilutė s2) metodas grąžina pirmojo pasireiškimo indeksą s2 . Taigi 4 atspausdintas kaip s1='JavaLove'.   5 programa: 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  ();      }   }   
Parinktys: A) Rašymas... B) Knygos rašymas C) Kodo rašymas D) Kompiliavimas nepavyksta Atsakymas : B) Rašymo knyga Paaiškinimas: Kadangi statinių metodų negalima nepaisyti, nesvarbu, kurios klasės objektas yra sukurtas. Kaip a yra a Autorius nurodytas tipas taip visada Autorius vadinamas klasės metodas. Jei pašalinsime rašyti () metodas iš Autorius tada klasė Rašytojas klasės metodas vadinamas kaip Autorius klasė pratęsiama Rašytojas klasė.