logo

Резултат от Java програма | Комплект 9

Ниво на трудност : Средно ниво

Предскажете изхода на следните Java програми:

Програма 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();  } } 

Изход:



Geeksforgeeks  
Geeksforgeeks

Обяснение:

Знаем, че статичните променливи се извикват, когато се зарежда клас, а статичните променливи се извикват само веднъж. Сега ред 13 води до създаване на обект, който на свой ред извиква конструктора и 'Geeksforgeeks' се отпечатва втори път. Ако в ред 8 статичната променлива не би била използвана, обектът би бил извикан рекурсивно безкрайно, което води до грешка StackOverFlow.

centos срещу redhat

Програма 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);  } } 

Изход:

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

Обяснение:

Статичният блок се изпълнява, когато класът се зареди в паметта. Един клас може да има множество статични блокове, които се изпълняват в същата последователност, в която са записани в програмата.

Забележка : Статичните методи могат да имат достъп до променливи на класа, без да използват обект на класа. Тъй като конструкторът се извиква, когато се създава нов екземпляр, първо се извикват статичните блокове и след това се извиква конструкторът. Ако щяхме да стартираме същата програма без използване на обект, конструкторът нямаше да бъде извикан.  

Програма 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));  } } 

Изход:

Compilation fails. 

Обяснение:

Методът calc() в клас superClass е окончателен и затова не може да бъде заменен.  

mit пълна форма

Програма 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);  } } 

Изход:

false  
true

Обяснение:

В изходния код на обект Integer ще намерим метод 'valueOf', в който можем да видим, че диапазонът на обекта Integer е от IntegerCache.low(-128) до IntegerCache.high(127). Следователно числата над 127 няма да дадат очаквания резултат. Диапазонът на IntegerCache може да се наблюдава от изходния код на класа IntegerCache.