|
|
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Добрый вечер Хотел уточнить, а то сомнения бродят в неокрепшем уме. Есть некоторый код: Код: java 1. 2. 3. 4. Насколько правильно так сравнивать значения? Или лучше использовать equals? И еще, у Integer есть пулл, есть ли он у Long и других классов-оболочек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 22:09 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
TimeinНасколько правильно так сравнивать значения? Как я понимаю, Unboxing будет, но полного и исчерпывающего описания, когда происходит boxing, когда unboxing я не нашел. https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html TimeinИли лучше использовать equals? Лично я бы использовал longValue(), тот же unboxing только явный equals выглядит худшим вариантом, т.к. потребует создание еще одного экземпляра объекта - а оно надо? чисто моя точка зрения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 23:12 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Так правильнее Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 10:10 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
leaderТак правильнее Код: java 1. 2. 3. 4. А чем правильнее-то? Разве в случае, когда value есть null выполняется условие value==1L? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 10:14 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
SQL2008А чем правильнее-то? Разве в случае, когда value есть null выполняется условие value==1L? Если value равен null, тогда сравнение value==1L даст NullPointerException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 10:28 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
leaderЕсли value равен null, тогда сравнение value==1L даст NullPointerException Это точно. Указателей нет, а NPE повсюду! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 10:53 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
SQL2008leaderТак правильнее Код: java 1. 2. 3. 4. А чем правильнее-то? Разве в случае, когда value есть null выполняется условие value==1L? При сравнении со скаляром - сначала выполняется анбоксинг, который выкинет npe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 11:35 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
TimeinДобрый вечер .. И еще, у Integer есть пулл, есть ли он у Long и других классов-оболочек? Есть у Byte, Short, Long и Character. Ну и у Boolean :) У Float и Double соответственно нет. Это очень просто выясняется просмотром кишков исходников JDK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 11:58 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
leaderSQL2008А чем правильнее-то? Разве в случае, когда value есть null выполняется условие value==1L? Если value равен null, тогда сравнение value==1L даст NullPointerException Блин! Как все сложно... Не знал об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:29 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Timein, Код: java 1. 2. 3. а под капотом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:54 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Usmanif(java.util.Objects.equals(1L, value)){ // code } Чем мне не нравятся ООП-языки. что фиг поймешь, какой реально код будет сгенерирован и выполнятся т.к. теоретически. тут должен быть Boxing в момент выполнения, а нафиг он нужен? а создавать код вида Usmanpublic final static one = Long.valueOf( 1L ); .... if(java.util.Objects.equals(one, value)){ // code } Как-то уже длинно получается (((( понятно, что с константами от -127 до 127 потери времени будут не сильно большие, но если нужно сравнение с произвольным числом... тут уже из-за boxing'а можем и heap дергать ((( IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:14 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЧем мне не нравятся ООП-языки. что фиг поймешь, какой реально код будет сгенерирован и выполнятсякод привел (см. выше) - стандартный метод из java.util.* Leonid Kudryavtsevт.к. теоретически. тут должен быть Boxing в момент выполнения, а нафиг он нужен?в данном случае boxing будет, т.к. метод считается универсальным... никто не мешает разработчику воспользоваться перегрузкой методов (: Leonid KudryavtsevUsmanpublic final static one = Long.valueOf( 1L );откуда это взялось?Leonid KudryavtsevКак-то уже длинно получается ((((можно вынести в секцию import (это для наглядности, чтоб понять откуда этот Objects взялся) Leonid KudryavtsevКак-то уже длинно получается (((( понятно, что с константами от -127 до 127 потери времени будут не сильно большие, но если нужно сравнение с произвольным числом... тут уже из-за boxing'а можем и heap дергать (((а эта проблема решается при помощи опции -XX:AutoBoxCacheMax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 14:30 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Usman.....а эта проблема решается при помощи опции [b]-XX:AutoBoxCacheMax[/b мне кажется глагол "решается" применен не правильно, правильно сказать "затыкается". Т.к. -XX:AutoBoxCacheMax, это явно затычка, а не решение. IMHO Но тут уже на вкус и цвет... Я бы просто сделал longValue() и сравнил. А сравнивать long'и через equals на мой взгляд извращение. Да и вообще, если взять нормальные коллекции для примитивных типов (которые на порядок быстрее и компактнее, чем стандартные), то смысл инкапсулировать атомарных типов в объекты почти пропадает. Т.ч. даром этот боксинг и анбоксинг не нужен. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:03 |
|
||
|
Равенство двух Long
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevнормальные коллекции для примитивных типов (которые на порядок быстрее и компактнее, чем стандартные)нашел ArrayIntList (из commons-primitives) - это фактически обертка над массивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 18:25 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=53&tid=2122306]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 365ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...