(я предполагаю, что args0
и args1
имеет строк с одинаковым значением)
args0.intern()
будет проверить, если строка пул уже содержит строки с таким же значением, как Строка от args0
.
- Если пул содержит такую ссылку на String, он будет возвращен, если не будет создан новый String с тем же значением, что и
args0
, который будет помещен в ссылку пула на его возврат.
после
args0
и args1
все еще держат строки, используемые в командной строке, так что они отличаются от строк в бассейне.
Чтобы изменить это попробовать, может быть
args0 = args0.intern();
args1 = args1.intern();
Теперь args0 = args0.intern();
поместит «поставить» строку из args0
в обновлении пула args0
удерживать эту строку.После args1 = args1.intern();
стажер увидит, что пул содержит ту же строку (ранее размещенную с args0.intern()
), поэтому просто вернет ссылку на нее и сохранит ее под args1
.
Теперь if(args0 == args1)
должен быть true
, потому что обе ссылки содержат один и тот же объект String.
возможно дубликат [? Как сравнить строки в Java] (http://stackoverflow.com/questions/513832/how- do-i-compare-strings-in-java) –
Будучи 'String' inmutable, вам не нужно будет присваивать экземпляр' intern() 'возвращает, чтобы ссылаться на экземпляр интернированного? 'args0' и' args1' по-прежнему являются исходными отдельными экземплярами массива. –
Полезная информация о String.intern: http://stackoverflow.com/questions/1091045/is-it-good-practice-to-use-java-lang-string-intern – fvu