Давайте сначала посмотрим на кусок кода, он очень простой, не так ли?
Сделай это:
Это отличается от того, что большинство людей думают в своих сердцах.Многие люди все еще борются, правда это все или ложь.
Однако одно истинно, а другое ложно, почему это так?
Некоторые люди вообще не думают об этом, просто открывая поиск Baidu, чтобы найти ответ (все они являются главными инженерами-программистами Baidu).
Согласно механизму компиляции Java, после компиляции файла .java будет сгенерирован файл .class для загрузки и выполнения JVM, поэтому я нашел файл .class, декомпилировал его и обнаружил, что компилятор очень капризный ( smart) при компиляции нашего кода.Добавив метод valueOf к объявленной нами переменной, код становится таким:
Взгляните на реализацию метода valueOf
Мы обнаружили, что когда автор Integer писал этот класс, чтобы избежать повторного создания объекта, значение Integer было кэшировано.Если значение находится в пределах диапазона кэша, кэшированный объект будет возвращен напрямую, в противном случае будет возвращен новый объект .Что именно этот кеш кэширует? Взгляните на класс IntegerCache:
Это внутренний статический класс, доступ к которому возможен только внутри класса Integer.При инициализации этого класса он загружает конфигурацию JVM.Если есть значение, массив кеша будет инициализирован настроенным значением, в противном случае он будет быть в кэше — значение от 128 до 127.
Давайте еще раз взглянем на наш предыдущий код:
Вывод: Когда мы сравниваем значения двух объектов Integer, независимо от того, как они объявлены, мы должны использовать для сравнения equals, а не ==.В Java нет перегруженного оператора, особенно при переходе с других языков.Детская обувь на Java стоит обратить внимание.equals я подробно объяснял в других статьях портала:Говорить о равных в Java (вкл.) — знать столбец
Рассмотрим результат выполнения следующего кода:
Если вам нравится эта серия статей, пожалуйста, лайкните или поделитесь, ваша поддержка является движущей силой для меня, чтобы продолжить, вы также можете оставить сообщение в области комментариев, чтобы узнать, что вы хотите знать, если у вас есть возможность, эта колонка объясню, и напоследок не забудь обратить на меня внимание.
Предыдущий:Написано перед колонкой - те штуки на Java
Следующий:Java String Thing — Java Thing
Перепечатка приветствуется, но с указанием "автора" и "оригинального адреса". Пожалуйста, сохраните этот абзац в тексте для перепечатки, спасибо за уважение авторских прав. Для коммерческого воспроизведения или публикации, пожалуйста, свяжитесь с автором для получения разрешения.