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

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
Зареєструйся Зараз
або Підпишись на майбутні тести