logo

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 .
 

comando de windows arp