Nivel de dificultad: Novato
Prediga la salida de los siguientes programas Java.
Programa 1:
Java
// filename Main.java class Test { protected int x, y; } class Main { public static void main(String args[]) { Test t = new Test(); System.out.println(t.x + " " + t.y); } }
Producción:
0 0
En Java, se puede acceder a un miembro protegido en todas las clases del mismo paquete y en las clases heredadas de otros paquetes. Dado que Test y Main están en el mismo paquete, no hay problemas relacionados con el acceso en el programa anterior. Además, los constructores predeterminados inicializan las variables integrales como 0 en Java (consulte este artículo para obtener más detalles). Es por eso que obtenemos la salida como 0 0.
Programa 2:
Java
// filename Test.java class Test { public static void main(String[] args) { for(int i = 0; 1; i++) { System.out.println("Hello"); break; } } }
Salida: Error del compilador
Hay un error en la expresión de verificación de condición del bucle for. Java difiere de C++ (o C) aquí. C++ considera todos los valores distintos de cero como verdaderos y 0 como falsos. A diferencia de C++, una expresión de valor entero no se puede colocar donde se espera un valor booleano en Java. A continuación se muestra el programa corregido.
Java
// filename Test.java class Test { public static void main(String[] args) { for(int i = 0; true; i++) { System.out.println("Hello"); break; } } } // Output: Hello
Programa 3:
Java
// filename Main.java class Main { public static void main(String args[]) { System.out.println(fun()); } int fun() { return 20; } }
Salida: error del compilador
Al igual que C++, en Java, los métodos no estáticos no se pueden llamar en un método estático sin crear un objeto. Si hacemos fun() static O si creamos un objeto de la clase Main y luego llamamos al método en ese objeto, entonces el programa compila bien sin ningún error de compilación. A continuación se muestra el programa corregido.
1. Al definir el método como “estático”
Java
// filename Main.java class Main { public static void main(String args[]) { System.out.println(fun()); } static int fun() { return 20; } } // Output: 20
2. Creando un objeto
Java
// filename Main.java class Main { public static void main(String args[]) { Main obj = new Main(); System.out.println(obj.fun()); } int fun() { return 20; } } // Output: 20
Programa 4:
Java
// filename Test.java class Test { public static void main(String args[]) { System.out.println(fun()); } static int fun() { static int x= 0; return ++x; } }
Salida: Error del compilador
A diferencia de C++, las variables locales estáticas no están permitidas en Java. Consulte este artículo para obtener más detalles. Podemos tener miembros estáticos de clase para contar el número de llamadas a funciones y otros propósitos a los que sirven las variables estáticas locales de C++. A continuación se muestra el programa corregido.
Java
class Test { private static int x; public static void main(String args[]) { System.out.println(fun()); } static int fun() { return ++x; } } // Output: 1
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA