logo

Sortida del programa Java | Set 7

Nivell de dificultat: Intermedi Prediu la sortida dels següents programes Java. Programa 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();  } } 
Opcions: A) 20 B) 100 C) 1000 D) 2 Resposta: A) 20 Explicació: Aquí la variable d'instància de classe name(num) és la mateixa que calc() mètode nom variable local (núm). Així, per fer referència a la variable d'instància de classe de calc() mètode això s'utilitza la paraula clau. Així que en declaració això.núm = núm * 10 en a representa la variable local del mètode el valor del qual és 2 i aquest.núm representa la variable d'instància de classe el valor inicial de la qual és 100. Ara entra printNum() mètode ja que no té cap variable local el nom de la qual sigui el mateix que la variable d'instància de classe, de manera que podem utilitzar directament en a per fer referència a la variable d'instància encara que aquest.núm es pot utilitzar.   Programa 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;  } } 
Opcions: A) La sortida és certa i MyStuff compleix el contracte Object.equals(). B) La sortida és falsa i MyStuff compleix el contracte Object.equals(). C) La sortida és certa i MyStuff NO compleix el contracte Object.equals(). D) La sortida és falsa i MyStuff NO compleix el contracte Object.equals(). Resposta: C) La sortida és certa i MyStuff NO compleix el contracte Object.equals(). Explicació: Com iguals (objecte objecte) El mètode a la classe Object compara dos objectes sobre la base de la relació d'equivalència. Però aquí només estem confirmant que l'objecte és nul o no Per tant, no es compleix Object.equals() contracte. Com m1 no és nul true s'imprimirà.   Programa 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();  } } 
Opcions: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Resposta: A) alfa beta b b Explicació: La declaració nova beta().go() s'executa en dues fases. En primera fase Beta s'anomena constructor de classes. No hi ha cap membre de la instància present Beta classe. Així que ara Beta s'executa el constructor de classes. Com Beta la classe s'estén Alfa classe, així que la trucada va a Alfa constructor de classes com a primera instrucció per defecte (posat pel compilador). super() en el Beta constructor de classes. Ara com una variable d'instància ( tipus ) està present a Alfa classe perquè obtindrà memòria i ara Alfa s'executa el constructor de classes i després crida a return to Beta instrucció següent del constructor de classes. Així que alfa beta està imprès. En segona fase anar () s'anomena mètode en aquest objecte. Com que només hi ha una variable ( tipus ) a l'objecte el valor del qual és a . Així que es canviarà per b i imprès dues vegades. El súper paraula clau aquí no serveix de res.   Programa 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);  } } 
Opcions: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException es llança en temps d'execució. Resposta: C) 4 Explicació: append(String str) mètodeconcatenar el str a s1 . El subcadena (índex int) El mètode retorna la cadena des de l'índex donat fins al final. Però com que no hi ha cap variable String per emmagatzemar la cadena retornada, serà destruïda. Ara indexOf(String s2) mètode retorna l'índex de la primera aparició de s2 . Per tant, 4 s'imprimeix com s1='JavaLove'.   Programa 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();  } } 
Opcions: A) Escriptura... B) Llibre d'escriptura C) Codi d'escriptura D) La compilació falla Resposta: B) Llibre d'escriptura Explicació: Com que els mètodes estàtics no es poden anul·lar, no importa quin objecte de classe es creï. Com a és a Autor tipus de referència, així que sempre Autor s'anomena mètode de classe. Si eliminem escriure () mètode de Autor classe doncs Escriptor mètode de classe s'anomena com Autor la classe s'estén Escriptor classe.