Я знаю, что String неизменяем. В приведенном ниже примере объект константы String будет создан в объединенной области String, и s1
будет указывать на "Hello"
. Также s2
сделает константу String с тем же значением "Hello"
.
Но я не понимаю, почему s2
не указывают на первый "Привет". Насколько я понимаю, строка "Hello" уже существует в объединенной области строк, и если я создам другую строку с этим значением, она будет указывать на существующий объект, а не создавать другой объект. Например, s3
указывает на тот же объект, что и s1
.
Я не использовал ключевое слово new
для s2
. Почему s2
не указывает на тот же объект, что и s1 и s3?
public class DemoApp {
public static void main(String args[]) {
String s1 = "Hello";
String s2 = "Hello friends".substring(0, 5);
String s3 = "Hello";
System.out.println(s2); //Hello
System.out.println(s1 == s2); //false
System.out.println(s1 == s3); //true
}
}
Результат:
Hello
false
true
s3
и двухs1
...? - person user202729   schedule 22.04.2018new
для s2, вы не использовали его явно, но оно использовалось внутри методомsubstring
. - person Pshemo   schedule 22.04.2018