Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/64: Рейтинг темы: голосов - 64, средняя оценка - 4.98
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485

Сравнение Long

30.01.2018, 23:30. Показов 12970. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер

Хотел уточнить, а то сомнения бродят в неокрепшем уме. Есть некоторый код:

Java
1
2
3
4
Long value = getValueFromDB();
if(value==1L){
     // code
}
Насколько правильно так сравнивать значения? Или лучше использовать equals?
И еще, у Integer есть пулл, есть ли он у Long и других классов-оболочек?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2018, 23:30
Ответы с готовыми решениями:

Дополните пожалуйста эти методы! скалярное произведение векторов, умножение на скаляр, сравнение векторов, сравнение
public class VectorTricks { public static void main(String args) { Vector v1 = new Vector(1, 2, 3); Vector v2...

Сумма 2-х long
Есть ли способ сложения 2-х long (при условии, что сумма больше Long.MAX_VALUE). Не приведя до сложения переменные к BigInteger. ...

Long to short
привет всем, продолжаю подготовку к оса. В следующем вопросе среди прочих правильный ответ C_ что в строке 3 происходит кастинг long to...

2
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
31.01.2018, 00:24
Если value может быть null, то текущий код может упасть с NPE. Можно писать так, чтобы NPE не было:
Java
1
2
if (Objects.equals(value, 1L)) {
}
или
Java
1
2
3
4
public static final Long MAGIC_CONST = 1L;
...
if (MAGIC_CONST.equals(value)) {
}
В первом случае тоже предпочтительно 1L вынести в public static final константу.

Цитата Сообщение от Alradalion Посмотреть сообщение
есть ли он у Long
Да
1
 Аватар для al1as
386 / 74 / 31
Регистрация: 13.04.2012
Сообщений: 127
31.01.2018, 00:25
Здравствуйте!
Ответы на все вопросы - JLS. Chapter 5. Conversions and Contexts.
Цитата Сообщение от Alradalion Посмотреть сообщение
Насколько правильно так сравнивать значения? Или лучше использовать equals?
По ссылке переходим в раздел 5.6.2. Binary Numeric Promotion и видим, что при наличии numeric equality operators (==, !=), который подразумевает, что один из операндов примитивного типа, а другой в него может быть преобразован, производится Binary Numeric Promotion, первым шагом которого является unboxing. Поэтому ответ: без разницы, до тех пор, пока один из операндов соответствующего примитивного типа. Однако с другой стороны, к примеру, у Long метод equals следующего вида:
Java
1
2
3
4
5
6
public boolean equals(Object obj) {
    if (obj instanceof Long) {
        return value == ((Long)obj).longValue();
    }
    return false;
}
Поэтому если мы будем сравнивать при помощи Long.equals(int), например, то в результате autoboxing'a мы получим в качестве типа параметра Integer и элементы окажутся не равны, даже если они имеют одинаковое значение. А сравнение при помощи оператора == будет положительным, поскольку после unboxing'a будет выполнен widening primitive conversion для значения типа int и в итоге сравниваться будут два значения типа long. То есть вот как это будет выглядеть:
Java
1
2
3
4
5
6
7
if (new Long(12).equals(12)) {
    System.out.println("This won't execute");
}
 
if (new Long(12) == 12) {
    System.out.println("Widening primitive conversion, will execute");
}
Цитата Сообщение от Alradalion Посмотреть сообщение
И еще, у Integer есть пулл, есть ли он у Long и других классов-оболочек?
Если я правильно понял, то по той же ссылке:
If the value p being boxed is an integer literal of type int between -128 and 127 inclusive (§3.10.1), or the boolean literal true or false (§3.10.3), or a character literal between '\u0000' and '\u007f' inclusive (§3.10.4), then let a and b be the results of any two boxing conversions of p. It is always the case that a == b.
Там же сказано, что в зависимости от реализации, может кэшироваться что-то ещё, но на это нельзя полагаться.

Не по теме:

Умы у нас одинаково неокрепшие, поэтому будем ждать замечаний более опытных коллег =)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2018, 00:25
Помогаю со студенческими работами здесь

Long в Integer
Как тип Long в Integer преобразовать?

Почему int = long?
Я написал: int i = 2147483647; long i = 9223372036854775807; И выдает что-то вроде слишком большое значение. Хотя long по идее должен...

Long Term Persistence
Здравствуйте требуется продемонстрировать работу Long Term Persistenc что это такое и с чем его едят?

Строку в long массив
Здравствуйте. Как правильно преобразовать строку в Long? В случае невозможности должен возвратить массив с 1 элементом равной 0L ...

Побайтовое копирование из int в long
Нужно взять байты из инта и переести их в long. Пример: int i=0xffffffff; // если вывести i в 10 с.с. то получится -1 long l=i;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru