logo

Utdata från Java-program | Set 9

Svårighetsgrad : Mellanliggande

Förutsäg resultatet av följande Java-program:

Program 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();  } } 

Produktion:



Geeksforgeeks  
Geeksforgeeks

Förklaring:

Vi vet att statiska variabler anropas när en klass laddas och statiska variabler anropas endast en gång. Nu leder rad 13 till skapandet av ett objekt som inturn anropar konstruktorn och 'Geeksforgeeks' skrivs ut andra gången. Om i rad 8 statisk variabel inte skulle ha använts skulle objektet ha anropats rekursivt oändligt vilket leder till StackOverFlow-fel.

git status -s

Program 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);  } } 

Produktion:

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

Förklaring:

Statiskt block exekveras när klassen laddas i minnet. En klass kan ha flera statiska block som exekveras i samma sekvens som de har skrivits in i programmet.

Notera : Statiska metoder kan komma åt klassvariabler utan att använda klassens objekt. Eftersom konstruktorn anropas när en ny instans skapas så anropas först de statiska blocken och efter det anropas konstruktorn. Om vi ​​skulle ha kört samma program utan att använda objekt skulle konstruktorn inte ha anropats.  

Program 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));  } } 

Produktion:

Compilation fails. 

Förklaring:

Metoden calc() i klassen superClass är final och kan därför inte åsidosättas.  

Program 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);  } } 

Produktion:

false  
true

Förklaring:

I källkoden för Integer-objektet hittar vi en metod 'valueOf' där vi kan se att intervallet för Integer-objektet ligger från IntegerCache.low(-128) till IntegerCache.high(127). Därför kommer siffrorna över 127 inte att ge den förväntade effekten. Intervallet för IntegerCache kan observeras från källkoden för IntegerCache-klassen.

linux hur man byter namn på en katalog