Рубрики

Вывод программы Java | Набор 11

Прогнозировать вывод следующих программ Java:

Вопрос 1 :

public class Base

{

    private int data;

  

    public Base()

    {

        data = 5;

    }

  

    public int getData()

    {

        return this.data;

    }

}

  

class Derived extends Base

{

    private int data;

    public Derived()

    {

        data = 6;

    }

    private int getData()

    {

        return data;

    }

  

    public static void main(String[] args)

    {

        Derived myData = new Derived();

        System.out.println(myData.getData());

    }

}

а) 6
б) 5
в) ошибка времени компиляции
г) Ошибка времени выполнения

Ответ (с)
Объяснение: При переопределении метода суперкласса, объявление метода в подклассе не может быть более ограничительным, чем объявление в суперклассе .

Вопрос 2 :

public class Test

{

    private int data = 5;

  

    public int getData()

    {

        return this.data;

    }

    public int getData(int value)

    {

        return (data+1);

    }

    public int getData(int... value)

    {

        return  (data+2);

    }

  

    public static void main(String[] args)

    {

        Test temp = new Test();

        System.out.println(temp.getData(7, 8, 12));

    }

}

а) Ошибка времени компиляции или времени выполнения
б) 8
в) 10
г) 7

Ответ (г)
Объяснение: (int… values) передается в качестве параметра методу, когда вы не знаете номер входного параметра, но знаете, что это за тип параметра (в данном случае это int). Когда новый объект создается в основном методе, переменные данные инициализируются равными 5. Вызов метода getData () с атрибутами (7, 8, 12) вызывает третий метод getData (), который увеличивает значение переменной данных на 2 и вернуть 7.

Вопрос 3:

public class Base

{

    private int multiplier(int data)

    {

        return data*5;

    }

}

  

class Derived extends Base

{

    private static int data;

    public Derived()

    {

        data = 25;

    }

    public static void main(String[] args)

    {

        Base temp = new Derived();

        System.out.println(temp.multiplier(data));

    }

}

а) 125
б) 25
в) Ошибка во время выполнения
г) ошибка времени компиляции

Ответ (г)
Объяснение: Поскольку множитель метода помечен как закрытый, он не наследуется и, следовательно, не виден для производного.

Вопрос 4:
Что из следующего является ЛОЖНЫМ в отношении блока finally?
a) Для каждого блока try может быть только 1 блок finally.
б) блок finally не будет выполнен, если программа завершится с помощью вызова System.exit ();
c) Если исключение не обработано в операторе catch, перед завершением программы JVM выполняет блок finally
d) блок finally содержит важный сегмент кода, поэтому код внутри блока finally выполняется с / без наличия блока try в коде Java.

Ответ (г)
Объяснение: Оператор (d) является ложным, поскольку блоки finally могут существовать, только если он успешно выполнит попытку или блок перехвата. Использование блока finally без блока try приведет к ошибке времени компиляции.

Вопрос 5:

import java.io.IOException;

import java.util.EmptyStackException;

  

public class newclass

{

    public static void main(String[] args)

    {

        try

        {

            System.out.printf("%d", 1);

            throw(new Exception());

        }

        catch(IOException e)

        {

            System.out.printf("%d", 2);

        }

        catch(EmptyStackException e)

        {

            System.out.printf("%d", 3);

        }

        catch(Exception e)

        {

            System.out.printf("%d", 4);

        }

        finally

        {

            System.out.printf("%d", 5);

        }

    }

}

а) 12345
б) 15
в) 135
г) 145

Ответ (г)
Объяснение: операторы catch записываются в следующем порядке: более конкретно для более общего. В приведенном выше коде выдается новое исключение типа Exception. Сначала код переходит к первому блоку catch, чтобы найти обработчик исключений. Но так как IOException не является
того же типа он перемещается вниз ко второму блоку захвата и, наконец, к третьему, где
исключение поймано и 4 напечатано. Поэтому ответ 145, как порядок
выполнения в терминах блоков: try-> catch-> finally.

Вопрос 6:

public class javaclass

{

    static

    {

        System.out.printf("%d", 1);

    }

    static

    {

        System.out.printf("%d", 2);

    }

    static

    {

        System.out.printf("%d", 3);

    }

    private static int myMethod()

    {

        return 4;

    }

    private int function()

    {

        return 5;

    }

  

    public static void main(String[] args)

    {

        System.out.printf("%d", (new javaclass()).function() + myMethod());

    }

}

а) 123
б) 45
в) 12345
г) 1239

Ответ (г)
Объяснение: статические блоки в Java выполняются еще до того, как компилятор обращается к main. В методе main создается новый объект javaclass и вызывается его метод function (), который возвращает 4. Число 5 возвращается при вызове статической функции
MyMethod (). 4 + 5 = 9. Таким образом, вывод программы 1239, потому что 123 печатается
в консоли еще до того, как метод main будет выполнен, а метод main при выполнении вернет 9.

Эта статья предоставлена Mayank . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Вывод программы Java | Набор 11

0.00 (0%) 0 votes