logo

Dane wyjściowe programu Java | Zestaw 9

Poziom trudności : Mediator

Przewiduj wyjście następujących programów Java:

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

Wyjście:



Geeksforgeeks  
Geeksforgeeks

Wyjaśnienie:

Wiemy, że zmienne statyczne są wywoływane podczas ładowania klasy, a zmienne statyczne są wywoływane tylko raz. Teraz linia 13 skutkuje utworzeniem obiektu, który z kolei wywołuje konstruktora i „Geeksforgeeks” jest wypisywany po raz drugi. Jeśli w linii 8 zmienna statyczna nie zostałaby użyta, obiekt zostałby wywołany rekurencyjnie w nieskończoność, co doprowadziłoby do błędu StackOverFlow.

vlc pobieraj filmy z YouTube

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

Wyjście:

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

Wyjaśnienie:

Blok statyczny jest wykonywany, gdy klasa jest ładowana do pamięci. Klasa może mieć wiele bloków statycznych, które są wykonywane w tej samej kolejności, w jakiej zostały zapisane w programie.

Notatka : Metody statyczne mogą uzyskiwać dostęp do zmiennych klasy bez użycia obiektu klasy. Ponieważ konstruktor jest wywoływany, gdy tworzona jest nowa instancja, najpierw wywoływane są bloki statyczne, a następnie wywoływany jest konstruktor. Gdybyśmy uruchomili ten sam program bez użycia obiektu, konstruktor nie zostałby wywołany.  

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

Wyjście:

Compilation fails. 

Wyjaśnienie:

Metoda calc() w klasie superClass jest ostateczna i dlatego nie można jej zastąpić.  

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

Wyjście:

false  
true

Wyjaśnienie:

W kodzie źródłowym obiektu Integer znajdziemy metodę 'valueOf', w której możemy zobaczyć, że zakres obiektu Integer leży od IntegerCache.low(-128) do IntegerCache.high(127). Dlatego liczby powyżej 127 nie dadzą oczekiwanego wyniku. Zakres IntegerCache można zaobserwować w kodzie źródłowym klasy IntegerCache.

Pasek narzędzi szybkiego dostępu ms word