logo

Uitvoer van Java-programma | Stel 8 in

Moeilijkheidsgraad : Tussenliggend
Voorspel de uitvoer van de volgende Java-programma's.
Programma 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');  } } 

Uitgang: 
 

Not equal


Uitleg: Omdat s1 en s2 twee verschillende objecten zijn, zijn de referenties niet hetzelfde en vergelijkt de == operator de objectreferentie. Er wordt dus 'Niet gelijk' afgedrukt om de daadwerkelijke tekens in de string te vergelijken. De methode equals() moet worden gebruikt. 
 
Programma 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();   } } 

Uitgang: 
 

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


Uitleg: Statische binding (of compileertijd) vindt plaats voor statische methoden. Hier p.wiebenik() roept de statische methode aan, zodat deze wordt aangeroepen tijdens het compileren, wat resulteert in een statische binding en de methode wordt afgedrukt in de Person-klasse. 
Terwijl p.wieBenJij() roept de methode aan Kind class omdat Java het standaard als een virtuele methode beschouwt, dat wil zeggen dynamische binding.
 
Programma 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');  } } 

Uitgang: 
 

First statement of try block 15 finally block Main method


Uitleg:  
Omdat er geen uitzondering is, wordt het catch-blok niet aangeroepen, maar de Eindelijk blok wordt altijd uitgevoerd na een try-blok, ongeacht of de uitzondering wordt afgehandeld of niet.
  
Programma 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();  } } 

Uitgang: 
 

gfg1gfg1gfg3


Uitleg : In eerste instantie wordt een nieuwe thread gestart met de naam gfg1 vervolgens voert de eerste run-methode in klasse twee de thread met de naam uit gfg1 daarna wordt een nieuwe thread gemaakt die de run-methode aanroept, maar aangezien een nieuwe thread kan worden gemaakt door alleen de start-methode aan te roepen, voert de vorige thread de actie uit en opnieuw gfg1 wordt afgedrukt. Er wordt nu een nieuwe thread gemaakt door de startmethode aan te roepen, zodat een nieuwe thread begint gfg3 naam en dus afdrukken gfg3 .
 

Java-code voorbeelden