Salida del programa Java | Conjunto 8

Nivel de dificultad : Intermedio
Predecir el resultado de los siguientes programas Java.
Programa 1:
 

Java
   class   GfG   {      public     static     void     main  (  String     args  []  )      {      String     s1     =     new     String  (  'geeksforgeeks'  );      String     s2     =     new     String  (  'geeksforgeeks'  );      if     (  s1     ==     s2  )         System  .  out  .  println  (  'Equal'  );      else      System  .  out  .  println  (  'Not equal'  );      }   }   

Producción: 
 

Not equal 


Explicación: Dado que s1 y s2 son dos objetos diferentes, las referencias no son las mismas y el operador == compara la referencia del objeto. Por lo tanto, imprime 'No igual' para comparar los caracteres reales en la cadena. Se debe utilizar el método .equals(). 
 
Programa 2:  
 

Java
   class   Person      {         private     void     who  ()      {      System  .  out  .  println  (  'Inside private method Person(who)'  );      }          public     static     void     whoAmI  ()      {      System  .  out  .  println  (  'Inside static method Person(whoAmI)'  );      }          public     void     whoAreYou  ()      {      who  ();      System  .  out  .  println  (  'Inside virtual method Person(whoAreYou)'  );      }   }   class   Kid     extends     Person   {         private     void     who  ()      {      System  .  out  .  println  (  'Kid(who)'  );      }          public     static     void     whoAmI  ()      {      System  .  out  .  println  (  'Kid(whoAmI)'  );      }          public     void     whoAreYou  ()      {      who  ();      System  .  out  .  println  (  'Kid(whoAreYou)'  );      }   }   public     class   Gfg   {      public     static     void     main  (  String     args  []  )         {      Person     p     =     new     Kid  ();         p  .  whoAmI  ();         p  .  whoAreYou  ();         }   }   

Producción: 
 

Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou) 


Explicación: El enlace estático (o tiempo de compilación) ocurre para métodos estáticos. Aquí p.quiénAmI() llama al método estático por lo que se llama durante el tiempo de compilación, por lo que genera un enlace estático e imprime el método en la clase Persona. 
Mientras p.quién eres tú() llama al método en Niño clase ya que de forma predeterminada Java lo toma como un método virtual, es decir, enlace dinámico.
 
Programa 3:  
 

Java
   class   GfG   {      public     static     void     main  (  String     args  []  )      {      try      {      System  .  out  .  println  (  'First statement of try block'  );      int     num  =  45  /  3  ;      System  .  out  .  println  (  num  );      }      catch  (  Exception     e  )      {      System  .  out  .  println  (  'Gfg caught Exception'  );      }      finally      {      System  .  out  .  println  (  'finally block'  );      }      System  .  out  .  println  (  'Main method'  );      }   }   

Producción: 
 

First statement of try block 15 finally block Main method 


Explicación:  
Como no hay excepción, no se llama al bloque catch, pero el finalmente El bloque siempre se ejecuta después de un bloque try, ya sea que se maneje la excepción o no.
  
Programa 4:  
 

Java
   class   One     implements     Runnable      {      public     void     run  ()         {      System  .  out  .  print  (  Thread  .  currentThread  ().  getName  ());      }   }   class   Two     implements     Runnable      {      public     void     run  ()         {      new     One  ().  run  ();      new     Thread  (  new     One  ()  'gfg2'  ).  run  ();      new     Thread  (  new     One  ()  'gfg3'  ).  start  ();      }   }   class   Three      {      public     static     void     main     (  String  []     args  )         {      new     Thread  (  new     Two  ()  'gfg1'  ).  start  ();      }   }   

Producción: 
 

gfg1gfg1gfg3 


Explicación : Inicialmente, el nuevo hilo se inicia con el nombre. gfg1 luego, en la clase dos, el primer método de ejecución ejecuta el hilo con el nombre gfg1 luego de eso se crea un nuevo hilo llamando al método de ejecución, pero dado que se puede crear un nuevo hilo llamando al método de inicio solo, el hilo anterior realiza la acción y nuevamente gfg1 se imprime. Ahora se crea un nuevo hilo llamando al método de inicio para que un nuevo hilo comience con gfg3 nombre y por lo tanto impresiones gfg3 .