Что будет выведено на экран после выполнения следующего кода?

class Test {
    public static void main(String[] args){
        int x = 1;
        Integer y = new Integer(x);
        int [] z = {x};
        
        func(x, y, z);
        
        System.out.print(x);
        System.out.print(y);
        System.out.println(z[0]);
    }
    
    static void func (int x, Integer y, int[] z) {
        x++;
        y++;
        z[0]++;
    }
}
Explanation

Так как передача параметров в метод осуществляется по значению, то:
- переменная x хранит то же самое число;
- переменная y ссылается на тот же самый объект;
- переменная z ссылается на тот же самый массив,
что и внешние переменные.

Изменение значения x не влияет на значение внешней переменной.
Объекты типа Integer являются неизменяемыми (immutable), поэтому после операции y++ переменная y будет ссылаться на новый объект (с увеличенным значением), а исходный объект останется нетронутым.
Ссылка на массив позволяет свободно изменять значения элементов массива.


Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты