-
Notifications
You must be signed in to change notification settings - Fork 3
Duplicate objects
Часто можно встретить такой код:
String first = new String("Hello");
И чем же он отличается от:
String first = "Hello";
А отличается он вот чем - в первом случае мы при каждом проходе через этот код будем создавать новый объект String. Во втором же строка "Hello" поместится в пулл строк, откуда будет браться.
Получается, что в первом случае мы создаем много дублирующих объектов!
Как же этого избежать?
Во-первых, если вы работаете с классом, у которого есть статические методы генерации объекта и конструкторы, то используйте именно статические методы.
Boolean.valueOf("true");
new Boolean("true");
Если посмотреть, то valueOf уже использует созданный объект, поэтому мы не будем создавать кучу лишних объектов-дубликатов.
Пусть мы хотим посчитать сумму чисел. Если мы напишем так:
Integer sum = 0;
for(int i = 1; i < 100; i++)
sum += i;
Мы каждый раз при суммировании будем создавать Integer объект-упаковку! А все потому, что мы sum объявили как Integer!
Используйте примитивы и аккуратнее с boxing
.
Выносите переменные-константы из методов.
public void method1() {
String host = "host";
int port = 22;
//do work
}
Нет смысла держать эти переменные в методе - их надо либо выносить в константы класса или передавать в метод параметрами.
//todo string integer and etc pools