Создание строки в Java - PullRequest
       3

Создание строки в Java

2 голосов
/ 03 октября 2010

В Java Строка может быть создана с помощью оператора new или с помощью + и + =. Итак, все ли методы создания строки проверяют, существует ли строка в пуле строк. Если они указывают, какой метод создания строк будет проверять пул.

Ответы [ 2 ]

5 голосов
/ 03 октября 2010

Нет, не делают.

Простой пример:

    String s = new String("hell");
    String hello = "hello";
    s += 'o';
    System.out.println(hello == hello.intern()); //True
    System.out.println(s == s.intern());         //False
    System.out.println(s == hello);              //False
    System.out.println(s.intern() == hello);     //True
    //To sum up : s != s.intern() == hello.intern() == hello

Этот код на ideone

Здесь новая версия "s" не является внутренней версией "hello"

Если вы хотите иметь версию пула для конкретной строки, вы можете использовать метод intern() (как я делал выше). Таким образом, вы обязательно получите ту же ссылку.


Ресурсы:

  • Javadoc: String.intern() (можно подумать, что ссылка указывает на valueOf(double), но метод intern() сразу после;))
3 голосов
/ 03 октября 2010

Автоматически интернируются только строковые константы и литералы. Если вы объединяете или иным образом создаете строки, вам нужно вызвать метод intern (). Смотри http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#intern().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...