logo

Излаз Јава програма | Сет 9

Ниво тежине : Интермедиате

Предвидите излаз следећих Јава програма:

Програм 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 резултира креирањем објекта који поново позива конструктор и 'Геексфоргеекс' се штампа други пут. Да у реду 8 статичка променљива не би била коришћена, објекат би се позивао рекурзивно бесконачно што би довело до грешке СтацкОверФлов.

питхон тупле сортиран

Програм 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. 

Објашњење:

Метод цалц() у класи суперЦласс је коначан и стога се не може заменити.  

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

Објашњење:

У изворном коду Интегер објекта наћи ћемо метод 'валуеОф' у коме можемо видети да опсег Интегер објекта лежи од ИнтегерЦацхе.лов(-128) до ИнтегерЦацхе.хигх(127). Стога бројеви изнад 127 неће дати очекивани резултат. Опсег ИнтегерЦацхе-а се може посматрати из изворног кода класе ИнтегерЦацхе.

ц# датум и време