Я читал ранее, что классы-оболочки являются неизменными. Неизменяемый означает, что значение не может быть изменено. Ниже я попробовал этот простой пример, который можно просто вставить в любой основной метод. сначала я создаю Integer, который обертывает значение пять. Неизменяемость означает, что они не могут быть изменены, поэтому почему я могу установить значение «Я» 89. Я думаю, что это происходит потому, что оно изменяется там, где (I) указывает, но я не уверен, почему это так.Почему у неизменяемого класса Integer значение сброшено?
В следующем примере я создаю целое число x, которое вызовет ошибку, если я попытаюсь изменить его. В этом конкретном случае х представляется неизменным, но не в случае переменной (i).
Кажется, что я могу изменить значение (i) всякий раз, когда я хочу так на самом деле. Целое число без ключевого слова final не является неизменным ???? Если я могу установить значение 89, то мне кажется, что переменную можно изменить.
Я прочитал другое сообщение по этому вопросу, и я до сих пор не уверен, почему я могу быть заменен на другую переменную. Также при написании кода лучший способ объявить примитивные типы. Почему бы не использовать классы-оболочки все время для создания переменных.
int y = 5;
Integer i = new Integer(y);
i = 89;
final Integer x = Integer.valueOf(5);
System.out.println("Integer:(i) " + i.intValue());
System.out.println("Integer:(i) " + i.byteValue());
System.out.println("Integer:(x) " + x.intValue());;
System.out.println("Integer:(x) " + x.byteValue());;
i = i - 5;
Используя все классы для объявления переменных: (это было бы лучше, чем объявить эти переменные с примитивными типами переменных)
Integer a = new integer(MyNewValue);
Integer b = new integer(MyNewValue);
Integer c = new integer(MyNewValue);
Integer d = new integer(MyNewValue);
Float fa = new integer(MyNewValue);
Итак, как бы вы нарушили неизменяемое правило для Java Integer? –
Как вы сказали, вы не можете. Извините, если я предположил, что это возможно. Каждый раз, когда вы выполняете какую-либо операцию над «Integer» (добавление, смещение бит и т. Д.), Вы получаете только новое значение. Отвечает ли это на ваш вопрос? –
Вид.Позвольте мне показать пример. Если у меня есть Integer a = new Integer (100); поэтому значение a равно 100. Я не могу сбросить это значение до 50, потому что Integer неизменен, но если я установил значение a в значение int, которое я объявил ранее, я мог бы изменить i, но не повлиять на то, что Integer a ссылается на , Так что это действительно было бы в стороне от этой части неизменности. верный. –