Salida del programa Java | Serie 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *