logo

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.