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

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 будет ссылаться на новый объект (с увеличенным значением), а исходный объект останется нетронутым.
Ссылка на массив позволяет свободно изменять значения элементов массива.

Follow CodeGalaxy

Mobile Beta

Get it on Google Play
Send Feedback
Keep exploring
Java quizzes
Cosmo
Sign Up Now
or Subscribe for future quizzes