public class StringPoolExample { public static void main(String[] args) { // Строки-литералы разделяют один объект в пуле String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); // true — одна и та же ссылка // Создание через new — новый объект в куче String s3 = new String("hello"); String s4 = new String("hello"); System.out.println(s3 == s4); // false — разные объекты // Принудительное добавление в пул String s5 = s3.intern(); System.out.println(s1 == s5); // true — теперь в пуле // Демонстрация экономии памяти List<String> literals = new ArrayList<>(); for (int i = 0; i < 10000; i++) { literals.add("common-string"); // все ссылаются на один объект } List<String> news = new ArrayList<>(); for (int i = 0; i < 10000; i++) { news.add(new String("common-string")); // 10000 отдельных объектов } }}
public class StringPoolExample { public static void main(String[] args) { // Строки-литералы разделяют один объект в пуле String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); // true — одна и та же ссылка // Создание через new — новый объект в куче String s3 = new String("hello"); String s4 = new String("hello"); System.out.println(s3 == s4); // false — разные объекты // Принудительное добавление в пул String s5 = s3.intern(); System.out.println(s1 == s5); // true — теперь в пуле // Демонстрация экономии памяти List<String> literals = new ArrayList<>(); for (int i = 0; i < 10000; i++) { literals.add("common-string"); // все ссылаются на один объект } List<String> news = new ArrayList<>(); for (int i = 0; i < 10000; i++) { news.add(new String("common-string")); // 10000 отдельных объектов } }}