logo

Sortida del programa Java | Set 9

Nivell de dificultat : Intermedi

Prediu la sortida dels següents programes Java:

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

Sortida:



Geeksforgeeks  
Geeksforgeeks

Explicació:

Sabem que les variables estàtiques es criden quan es carrega una classe i les variables estàtiques només es criden una vegada. Ara la línia 13 dóna com a resultat la creació d'un objecte que al seu torn crida al constructor i "Geeksforgeeks" s'imprimeix per segona vegada. Si a la línia 8 no s'hagués utilitzat la variable estàtica, l'objecte s'hauria cridat de manera recursiva i infinitament provocant un error StackOverFlow.

pitó camelcase

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

Sortida:

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

Explicació:

El bloc estàtic s'executa quan la classe es carrega a la memòria. Una classe pot tenir diversos blocs estàtics que s'executen en la mateixa seqüència en què s'han escrit al programa.

Nota : Els mètodes estàtics poden accedir a variables de classe sense utilitzar l'objecte de la classe. Com que el constructor es crida quan es crea una nova instància, primer es criden els blocs estàtics i després es crida el constructor. Si haguéssim executat el mateix programa sense utilitzar l'objecte, el constructor no s'hauria cridat.  

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

Sortida:

Compilation fails. 

Explicació:

El mètode calc() de la classe superClass és final i, per tant, no es pot substituir.  

algorisme per a bfs

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

Sortida:

false  
true

Explicació:

Al codi font de l'objecte Integer trobarem un mètode 'valueOf' en el qual podem veure que l'interval de l'objecte Integer es troba des d'IntegerCache.low(-128) fins a IntegerCache.high(127). Per tant, els números per sobre de 127 no donaran la sortida esperada. L'interval d'IntegerCache es pot observar des del codi font de la classe IntegerCache.