четверг, 8 декабря 2011 г.

Wrapper pools

В Java для более эффективного использования памяти используются пулы для хранения одних и тех же значений. Например, если создать две строковые переменные одинакового содержания без использования ключевого слова new, то при создании второй переменной ей будет присвоена ссылка на первую. Тоже касается, например, объектов Integer, но только для значений от -128 до 127. Но строки, созданные во время выполнения не будут являться одним объектом, за искобчением случая использования метода intern()


public class StringTest {
    public static final void main(String[] args) {
        String a = "Test string";
        String b = "Test string";
        String c = new String("Test string");
        
        String d = "Test ";
        String e = "string";
        
        System.out.format(
            "%s %s %s %s",
            a == b, a == c, a == (d + e), a == (d + e).intern()
        );
    }
}
/**
 * Output: true false false true
 */

Комментариев нет:

Отправить комментарий