Skip to content
Aleksandr Kuchuk edited this page Jul 7, 2016 · 1 revision

Введение

Часто можно встретить такой код:

String first = new String("Hello");

И чем же он отличается от:

String first = "Hello";

А отличается он вот чем - в первом случае мы при каждом проходе через этот код будем создавать новый объект String. Во втором же строка "Hello" поместится в пулл строк, откуда будет браться.

Получается, что в первом случае мы создаем много дублирующих объектов!

Как же этого избежать?

Совет №1

Во-первых, если вы работаете с классом, у которого есть статические методы генерации объекта и конструкторы, то используйте именно статические методы.

Boolean.valueOf("true");
new Boolean("true");

Если посмотреть, то valueOf уже использует созданный объект, поэтому мы не будем создавать кучу лишних объектов-дубликатов.

Совет №2

Пусть мы хотим посчитать сумму чисел. Если мы напишем так:

Integer sum = 0;
for(int i = 1; i < 100; i++)
    sum += i;

Мы каждый раз при суммировании будем создавать Integer объект-упаковку! А все потому, что мы sum объявили как Integer!

Используйте примитивы и аккуратнее с boxing.

Совет №3

Выносите переменные-константы из методов.

public void method1() {
String host = "host";
int port = 22;
//do work
}

Нет смысла держать эти переменные в методе - их надо либо выносить в константы класса или передавать в метод параметрами.

Pools

//todo string integer and etc pools

Clone this wiki locally