public static Integer valueOf(int i)
Возвращает экземпляр типа Integer, представляющий указанное значение типа int.Если новый экземпляр Integer не требуется, этот метод обычно следует использовать в предпочтении перед конструктором Integer (int), поскольку этот метод может значительно повысить производительность пространства и времени за счет кэширования часто запрашиваемых значений.
Параметры:
i
- значение типа int.
Возвращает:
a
Целочисленный экземпляр, представляющий i
.
Так как:
1,5
см.http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#valueOf%28int%29
Этот вариант valueOf был добавлен в JDK 5 к Byte, Short, Integer и Long (он уже существовал в тривиальном случае в Boolean начиная с JDK 1.4).Все это, конечно, неизменяемые объекты в Java.Раньше считалось, что если вам нужен объект Integer из int, вы создадите новое Integer.Но в JDK 5+, вы действительно должны использовать valueOf, потому что Integer теперь кэширует объекты Integer между -128 и 127 и может возвращать вам один и тот же объект Integer (0) каждый раз вместо того, чтобы тратить конструкцию объекта на совершенно новыйидентичный объект Integer.
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
см. Почему ВЫ должны использовать Integer.valueOf (int)
РЕДАКТИРОВАТЬ
автобокс и создание объектов:
Важным моментом, который мы должны учитывать, является то, что автобокс не уменьшает создание объектов, но уменьшает сложность кода.Хорошее эмпирическое правило - использовать примитивные типы, в которых нет необходимости для объектов, по двум причинам:
Примитивные типы не будут медленнее, чем их соответствующие типы-оболочки, и могут быть намного быстрее.Может быть неожиданное поведение, связанное с == (сравнить ссылки) и .equals () (сравнить значения).
Обычно, когда примитивные типы помещаются в упаковочные типы, JVM выделяет память исоздает новый объект.Но для некоторых особых случаев JVM повторно использует один и тот же объект.
Ниже приведен список примитивов, хранящихся как неизменяемые объекты:
логические значения true и false
Все байтовые значения
короткие значения от -128 до 127
int значения от -128 до127
символ в диапазоне от \ u0000 до \ u007F
см. http://today.java.net/pub/a/today/2005/03/24/autoboxing.html#performance_issue