Нет, постоянный пул для чисел не работает так же, как для строк. Для строк используются только константы времени компиляции, тогда как для типов оберток для целых типов любая операция по боксу будет всегда использовать пул, если он применим для этого значения. Так, например:
int x = 10;
int y = x + 1;
Integer z = y; // Not a compile-time constant!
Integer constant = 11;
System.out.println(z == constant); // true; reference comparison
JLS гарантирует небольшой диапазон объединенных значений, но реализации могут использовать более широкий диапазон, если они пожелают.
Обратите внимание, что, хотя это не гарантируется, каждый Реализация Я рассмотрел использование Integer.valueOf
для выполнения операций бокса - так что вы можете получить тот же эффект без помощи языка:
Integer x = Integer.valueOf(100);
Integer y = Integer.valueOf(100);
System.out.println(x == y); // true
Из раздела 5.1 .7 из JLS :
Если значение p, помещенное в поле, равно true, false, байт или символ в диапазоне от \ u0000 до \ u007f, или int или короткое число от -128 до 127 (включительно), затем пусть r1 и r2 - результаты любых двух бокс-конверсий p. Всегда бывает, что r1 == r2.
В идеале боксирование данного примитивного значения p всегда дает идентичную ссылку. На практике это может оказаться невозможным с использованием существующих методов внедрения. Правила выше - прагматичный компромисс. Последнее заключительное предложение требует, чтобы определенные общие значения всегда помещались в неразличимые объекты. Реализация может кэшировать эти, лениво или нетерпеливо. Для других значений эта формулировка запрещает любые предположения о идентичности вложенных значений на части программиста. Это позволило бы (но не требовать) совместного использования некоторых или всех этих ссылок.
Это гарантирует, что в большинстве распространенных случаев поведение будет желательным, не налагая чрезмерного штрафа за производительность, особенно на небольшие устройства. Менее ограниченные памятью реализации могут, например, кэшировать все значения char и short, а также значения int и long в диапазоне от -32K до + 32K.
Если вы не хотите использовать HTML5 Geolocoation API , вы можете обнаружить бит от IP.
Или попробовать другое другое решение