Nivel de dificultad : Intermedio
Prediga el resultado de los siguientes programas Java:
Programa 1:
Javaclass 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(); } }
Producción:
Geeksforgeeks
Geeksforgeeks
Explicación:
Sabemos que las variables estáticas se llaman cuando se carga una clase y las variables estáticas se llaman solo una vez. Ahora la línea 13 da como resultado la creación del objeto que a su vez llama al constructor y 'Geeksforgeeks' se imprime por segunda vez. Si en la línea 8 no se hubiera utilizado la variable estática, el objeto se habría llamado de forma recursiva infinitamente, lo que provocaría un error de StackOverFlow.
3d en autocad
Programa 2:
Javaclass 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); } }
Producción:
Static Block 1
Static Block 2
Value of num = 100
Value of mystr = Constructor
Explicación:
El bloque estático se ejecuta cuando la clase se carga en la memoria. Una clase puede tener varios bloques estáticos que se ejecutan en la misma secuencia en la que se escribieron en el programa.
Nota : Los métodos estáticos pueden acceder a variables de clase sin utilizar el objeto de la clase. Dado que se llama al constructor cuando se crea una nueva instancia, primero se llaman los bloques estáticos y luego se llama al constructor. Si hubiéramos ejecutado el mismo programa sin usar el objeto, no se habría llamado al constructor.
Programa 3:
Javaclass 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)); } }
Producción:
convertir cadena en fecha
Compilation fails. Explicación:
El método calc() en la clase superClass es final y por lo tanto no se puede anular.
Programa 4:
Javapublic 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); } }
Producción:
false
true
Explicación:
En el código fuente del objeto Integer encontraremos un método 'valueOf' en el que podemos ver que el rango del objeto Integer va desde IntegerCache.low(-128) hasta IntegerCache.high(127). Por lo tanto, los números superiores a 127 no darán el resultado esperado. El rango de IntegerCache se puede observar en el código fuente de la clase IntegerCache.