2015-03-17 4 views
0

Может ли кто-нибудь сказать мне, когда использовать equals() и оператор «==»? Я знаю, что метод equals() используется для сравнения значений строк. Также я знаю, что «==» используется для проверки ссылок. Что это значит?Что означает сравнение ссылок и сравнение значений?

+0

Возможный дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-compare-strings-in-java) –

ответ

1

Представьте себе две машины, на мгновение. Скажем, это зеленый Toyota Corolla и оранжевый Ferrari. Вы хотите сравнить их - они похожи? Да; они оба машины. Но у них разные свойства. Их ценности (буквально и образно) не равны, и когда я говорю о Венчике, я определенно не говорю о Ferrari. Когда я говорю об одном, я не имею в виду другого.

Теперь представьте, что я говорю с вами о красном венчике. У вас также есть красный венчик. Ухоженная! У нас такой же автомобиль! Кроме того, они не точно тот же автомобиль, потому что это две разные машины. Они просто имеют такую ​​же ценность. Я могу разрисовать его, и он не изменит вашу, или я не смогу разрушить мою, и они не будут иметь такую ​​же ценность. Сравнение наших двух автомобилей будет похоже на использование метода equals(). Мы могли бы сказать, что они имеют одинаковую ценность (до тех пор, пока я не рушится или не изменю ее каким-либо другим способом).

Но, если мы говорим о красном венчике, и, оказывается, я купил Венчик у кого-то, кого вы продали, - эй, мы говорим об одном и том же Corolla! Мы на самом деле имеем в виду то же самое. Если я разбиваю свой Венчик, я также разбил ваш (бывший) Венчик. Если я его рисую, это все тот же автомобиль. Проверка того, что мы говорим о , точно такая же вещь является ссылочным равенством.

Смежные вопросы