logo

Sortie du programme Java | Ensemble 8

Niveau de difficulté : Intermédiaire
Prédisez la sortie des programmes Java suivants.
Programme 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');  } } 

Sortir: 
 

Not equal


Explication: Puisque s1 et s2 sont deux objets différents, les références ne sont pas les mêmes et l'opérateur == compare la référence de l'objet. Il affiche donc « Pas égal » pour comparer les caractères réels dans la chaîne. La méthode equals() doit être utilisée. 
 
Programme 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();   } } 

Sortir: 
 

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


Explication: La liaison statique (ou temps de compilation) se produit pour les méthodes statiques. Ici p.whoAmI() appelle la méthode statique afin qu'elle soit appelée pendant la compilation, ce qui entraîne une liaison statique et imprime la méthode dans la classe Person. 
Alors que p.whoAreYou() appelle la méthode dans Enfant classe puisque par défaut Java la prend comme méthode virtuelle, c'est-à-dire une liaison dynamique.
 
Programme 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');  } } 

Sortir: 
 

First statement of try block 15 finally block Main method


Explication:  
Puisqu'il n'y a pas d'exception, le bloc catch n'est pas appelé mais le enfin Le bloc est toujours exécuté après un bloc try, que l'exception soit gérée ou non.
  
Programme 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();  } } 

Sortir: 
 

gfg1gfg1gfg3


Explication : Initialement, le nouveau fil de discussion est démarré avec le nom gfg1 puis dans la classe deux, la première méthode d'exécution exécute le thread portant le nom gfg1 puis après cela, un nouveau thread est créé en appelant la méthode run, mais comme un nouveau thread peut être créé en appelant uniquement la méthode start, le thread précédent effectue l'action et encore gfg1 est imprimé.Maintenant, un nouveau thread est créé en appelant la méthode start afin qu'un nouveau thread commence par gfg3 nom et donc impressions gfg3 .
 

clavier page suivante