Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
4 / 4 / 0
Регистрация: 28.02.2015
Сообщений: 51

Сравнение данных оболочек базовых типов

24.12.2015, 12:43. Показов 1190. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Потихоньку занимаюсь изучением Java и натыкаюсь на некоторые странности. Не могли бы вы мне объяснит следующий момент.
Имеем следующий код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
        // TODO code application logic here
        Integer i1 = 256;
        Integer i2 = 256;
        
        
        if (i1==i2) 
        {
            System.out.println("True"); 
        }
        else 
        {
            System.out.println("False"); 
         }
    }
//run:
//False
//СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)
Все как бы логично, т.к. оператор == сравнивает значения переменных, а в данном случае это ссылки на разные объекты.
Но, вот если изменить значения переменных i1 и i2 на нули, то результат противоположный.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
        // TODO code application logic here
        Integer i1 = 0;
        Integer i2 = 0;
        
        
        if (i1==i2) 
        {
            System.out.println("True"); 
        }
        else 
        {
            System.out.println("False"); 
         }
    }
//run:
//True
//СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)
1. И где спрашивается логика?
2. Что происходит? Автораспаковка значений в int? Почему тогда этого не происходит с другими значениями?

Заранее спасибо всем!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2015, 12:43
Ответы с готовыми решениями:

Где создаются переменные базовых типов
Привет, я новичок. В Java, если я ничего не путаю, все объекты создаются только в динамической памяти: Person person1 = new...

Часто ли используется преобразования базовых типов данных в C#
Хотел бы узнать, какие типы чаще используются в программировании. Usaga, https://metanit.com/sharp/tutorial/2.2.php Про вот это...

Преобразования базовых типов данных для сложения элементов в массиве
Ребят подскажите пожалуйста как правильно преобразовать типы данных что бы складывались элементы массива. Module Module1 Sub...

1
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
24.12.2015, 12:53
Для оптимизации JVM использует кэширование значений Integer, значение которых входит в 1 байт (диапазон от -128 до 127).
На просторах тырнэта можно найти кучу примеров и статей на этот счет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2015, 12:53
Помогаю со студенческими работами здесь

Сравнение типов данных
Пишу проверку на принадлежность объекта к Перечислениям. Ошибку не выдает, но не срабатывает. Код ( (Unknown Language)): Парам =...

Перегрузка операторов базовых типов
Привет. У меня появилась необходимость перегрузить вот такой вот оператор: public static bool operator ==(string str, (char, char) ch), но...

1C 8.2 Сравнение типов данных Ссылка и строка
Всем доброго времени суток Такая ерунда получилась, не могу сравнить строку и ссылку (не ну понятно что надо привести к 1 типу, только...

Сравнение типов данных вводимых пользователем
Здравствуйте, пытался гуглить, но ничего не нашел. Проблема: К примеру пользователь в программе должен ввести число и дальше идет...

Как программно определить диапазоны базовых типов?
То есть, скажем, нужно определить максимальное и минимальное значение типа long double. Как это сделать программно? В стандартной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru