Output del programma Java | Insieme 7

Livello di difficoltà: Intermedio Prevedere l'output dei seguenti programmi Java. Programma 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  ();      }   }   
Opzioni: A) 20 B) 100 C) 1000 D) 2 Risposta: A) 20 Spiegazione: Qui la variabile dell'istanza della classe name(num) è la stessa di calcolo() nome della variabile locale del metodo (num). Quindi, per fare riferimento alla variabile di istanza della classe from calcolo() metodo Questo viene utilizzata la parola chiave. Quindi in dichiarazione questo.num = num * 10 nell'a rappresenta la variabile locale del metodo il cui valore è 2 e questo.num rappresenta la variabile di istanza della classe il cui valore iniziale è 100. Ora in stampaNumero() metodo in quanto non ha una variabile locale il cui nome è lo stesso della variabile di istanza della classe, quindi possiamo usarlo direttamente nell'a per fare riferimento alla variabile di istanza però questo.num può essere utilizzato.   Programma 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  ;      }   }   
Opzioni: R) L'output è vero e MyStuff soddisfa il contratto Object.equals(). B) L'output è falso e MyStuff soddisfa il contratto Object.equals(). C) L'output è vero e MyStuff NON soddisfa il contratto Object.equals(). D) L'output è falso e MyStuff NON soddisfa il contratto Object.equals(). Risposta : C) L'output è vero e MyStuff NON soddisfa il contratto Object.equals(). Spiegazione: COME è uguale a(Oggetto oggetto) Il metodo nella classe Object confronta due oggetti sulla base della relazione di equivalenza. Ma qui stiamo solo confermando che l'oggetto è nullo o no, quindi non soddisfa Oggetto.equals() contrarre. COME m1 non è null vero verrà stampato.   Programma 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  ();      }   }   
Opzioni: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Risposta : A) alfa beta b b Spiegazione: La dichiarazione nuova Beta().go() viene eseguito in due fasi. Nella prima fase Beta viene chiamato il costruttore della classe. Non è presente alcun membro dell'istanza Beta classe. Quindi adesso Beta viene eseguito il costruttore della classe. COME Beta la classe si estende Alfa classe, quindi la chiamata va a Alfa costruttore di classe come prima istruzione per impostazione predefinita (inserito dal compilatore) è super() nel Beta costruttore di classi. Ora come variabile di istanza ( tipo ) è presente in Alfa class quindi avrà memoria e ora Alfa viene eseguito il costruttore della classe, quindi richiamare return to Beta istruzione successiva del costruttore della classe. COSÌ alfabeta viene stampato. Nella seconda fase andare() viene chiamato il metodo su questo oggetto. Poiché esiste una sola variabile ( tipo ) nell'oggetto il cui valore è UN . Quindi verrà cambiato in B e stampato due volte. IL parola chiave eccellente qui non serve a nulla.   Programma 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  );      }   }   
Opzioni: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException viene lanciato in fase di esecuzione. Risposta : C)4 Spiegazione: aggiungere(Stringa) metodoconcatena la str a s1 . IL sottostringa(indice int) Il metodo restituisce la stringa dall'indice specificato fino alla fine. Ma poiché non esiste alcuna variabile String per memorizzare la stringa restituita, verrà distrutta. Ora indiceDi(Stringa s2) metodo restituisce l'indice della prima occorrenza di s2 . Quindi 4 viene stampato come s1='JavaLove'.   Programma 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  ();      }   }   
Opzioni: A) Scrivere... B) Scrivere un libro C) Scrivere codice D) La compilazione fallisce Risposta : B) Scrivere un libro Spiegazione: Poiché i metodi statici non possono essere sovrascritti, non importa quale oggetto della classe viene creato. COME UN è un Autore tipo referenziato quindi sempre Autore viene chiamato il metodo della classe. Se rimuoviamo scrivere() metodo da Autore lezione allora Scrittore Il metodo della classe è chiamato come Autore la classe si estende Scrittore classe.