Разница заключается в следующем:
Если в VideoObj
метод equals()
был переопределен и использует String
, который передается через конструктор как title
, он проверяет, работает ли он, если String
нет буквальный
Если в equals()
кто-то сделал это:
...
if (otherObj.getTitle() == this.title) {
...
Первое утверждение выполнится успешно, а второе - если 10101 * будет строковым литералом. Строковые литералы в Java объединяются в пул, что означает, что вы получите несколько ссылок на один и тот же литерал, если он используется несколько раз;
String a = "This is a string";
String b = "This is a string";
// a and b will both be the same reference
String c = new String("This is a string");
// c will *not* be the same reference
Редактировать: Обратите внимание, что предполагается, что title
в вашем первом утверждении действительно String