Что происходит при составлении строки с разностной последовательностью? - PullRequest
0 голосов
/ 03 августа 2020
• 1000 "верно", "s21 == s20" также верно! "s1! = s0" должно быть ложным в моем понимании! если я не понимаю, приведенные ниже коды могут лучше объяснить, чем мои слова:
    String s20 = new String("2") + new String("1");  // "21"
    s20.intern();
    String s21 = "21";  // "21"
    Assert.assertTrue(s21 == s20);  // equal reference
    Assert.assertTrue(s21.equals(s20));

    s20 = new String("1") + new String("2");  // "12"
    s20.intern();
    s21 = "12";  // "12"
    Assert.assertTrue(s21 != s20);  // NOT equal, why??
    Assert.assertTrue(s21.equals(s20));

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Строка - это объект, а не примитив, == или! = Сравнить ссылку и. Равно значению. Но вы используете .intern (), но intern () возвращает String, но вы не можете назначить.

0 голосов
/ 03 августа 2020

Не совсем уверен, что вы хотите, но, по крайней мере, у вас разные сравнения в утверждениях:

Assert.assertTrue(s1 != s0);
// VS.
Assert.assertTrue(s21 == s20);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...