logo

Uitvoer van Java-programma | Stel 9 in

Moeilijkheidsgraad : Tussenliggend

Voorspel de uitvoer van de volgende Java-programma's:

Programma 1:

Java
class Gfg {  // constructor  Gfg()  {  System.out.println('Geeksforgeeks');  }    static Gfg a = new Gfg(); //line 8  public static void main(String args[])  {  Gfg b; //line 12  b = new Gfg();  } } 

Uitgang:



Geeksforgeeks  
Geeksforgeeks

Uitleg:

We weten dat statische variabelen worden aangeroepen wanneer een klasse wordt geladen en dat statische variabelen slechts één keer worden aangeroepen. Nu resulteert regel 13 in de creatie van een object dat op zijn beurt de constructor aanroept en 'Geeksforgeeks' wordt voor de tweede keer afgedrukt. Als in regel 8 geen statische variabele zou zijn gebruikt, zou het object oneindig recursief zijn aangeroepen, wat tot een StackOverFlow-fout zou leiden.

waar vind ik mijn browserinstellingen

Programma 2:

Java
class Gfg {  static int num;  static String mystr;  // constructor  Gfg()  {  num = 100;  mystr = 'Constructor';  }  // First Static block  static  {  System.out.println('Static Block 1');  num = 68;  mystr = 'Block1';  }  // Second static block  static  {  System.out.println('Static Block 2');  num = 98;  mystr = 'Block2';  }  public static void main(String args[])  {  Gfg a = new Gfg();  System.out.println('Value of num = ' + a.num);  System.out.println('Value of mystr = ' + a.mystr);  } } 

Uitgang:

Static Block 1  
Static Block 2
Value of num = 100
Value of mystr = Constructor

Uitleg:

Statisch blok wordt uitgevoerd wanneer de klasse in het geheugen wordt geladen. Een klasse kan meerdere statische blokken hebben die worden uitgevoerd in dezelfde volgorde waarin ze in het programma zijn geschreven.

Opmerking : Statische methoden hebben toegang tot klassevariabelen zonder het object van de klasse te gebruiken. Omdat de constructor wordt aangeroepen wanneer een nieuwe instantie wordt gemaakt, worden eerst de statische blokken aangeroepen en daarna de constructor. Als we hetzelfde programma zouden hebben uitgevoerd zonder het object te gebruiken, zou de constructor niet zijn aangeroepen.  

Programma 3:

Java
class superClass {  final public int calc(int a int b)  {  return 0;  } } class subClass extends superClass {  public int calc(int a int b)  {  return 1;  } } public class Gfg {  public static void main(String args[])  {  subClass get = new subClass();  System.out.println('x = ' + get.calc(0 1));  } } 

Uitgang:

Compilation fails. 

Uitleg:

De methode calc() in klasse superClass is definitief en kan dus niet worden overschreven.  

Programma 4:

Java
public class Gfg {  public static void main(String[] args)  {  Integer a = 128 b = 128;  System.out.println(a == b);  Integer c = 100 d = 100;  System.out.println(c == d);  } } 

Uitgang:

false  
true

Uitleg:

In de broncode van het Integer-object vinden we een methode 'valueOf' waarin we kunnen zien dat het bereik van het Integer-object ligt van IntegerCache.low(-128) tot IntegerCache.high(127). Daarom zullen de getallen boven de 127 niet de verwachte output opleveren. Het bereik van IntegerCache kan worden afgeleid uit de broncode van de klasse IntegerCache.

wat is object-java