Регистрация  |  Вход

equals vs ==

Есть ли какая-то концептуальная или принципиальная разница между equals и == ?

if ('text'.equals(str))

или
if ('text' == str)

Есть ли какая-то концептуальная или принципиальная разница между equals и == ?

[code]if ('text'.equals(str))[/code]
или
[code]if ('text' == str)[/code]

Любимый вопрос на собеседованиях по java
Ответ не знаю, использую второе.

Любимый вопрос на собеседованиях по java :D 
Ответ не знаю, использую второе.

Dmitry Shnyrev
Любимый вопрос на собеседованиях по java
Ответ не знаю, использую второе.

Про java я знаю прикол. В первом случае зравнивается строка, т.е. сами символы, а во втором объекты. Именно по-этому я использую везде первый вариант сравнения.
Но вот сейчас работаю со старым кодом и там много ==. Ну и мне немного облом переделывать на equals, т.к. не удобно будет птм смотреть что и как я поменял. Ну и плюс, менять шило на мыло не хочется. Вот и пытаюсь понять, есть ли разница в Apex.

[quote="Dmitry Shnyrev"]Любимый вопрос на собеседованиях по java :D 
Ответ не знаю, использую второе.[/quote]
Про java я знаю прикол. В первом случае зравнивается строка, т.е. сами символы, а во втором объекты. Именно по-этому я использую везде первый вариант сравнения.
Но вот сейчас работаю со старым кодом и там много ==. Ну и мне немного облом переделывать на equals, т.к. не удобно будет птм смотреть что и как я поменял. Ну и плюс, менять шило на мыло не хочется. Вот и пытаюсь понять, есть ли разница в Apex.

Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?

Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?

Dmitry Shnyrev
Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?

Может. Вот я и пытаюсь понят, стоит ли заморачиваться.

[quote="Dmitry Shnyrev"]Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?[/quote]
Может. Вот я и пытаюсь понят, стоит ли заморачиваться.

Is there any difference in equals vs == for String?

String q = 'teXt';
system.debug('teXt'.equals(q)); // true
system.debug('teXt' == q); // true
system.debug('text'.equals(q)); // false
system.debug('text' == q); // true

[url=http://salesforce.stackexchange.com/questions/80456/is-there-any-difference-in-equals-vs-for-string]Is there any difference in equals vs == for String?[/url]
[code]String q = 'teXt';
system.debug('teXt'.equals(q)); // true
system.debug('teXt' == q);      // true
system.debug('text'.equals(q)); // false
system.debug('text' == q);      // true[/code]

Chiz
system.debug('text' == q); // true

ну надо же, а почему true?

[quote="Chiz"]system.debug('text' == q);      // true[/quote]
ну надо же, а почему true?

Den Brown
Chiz
system.debug('text' == q); // true

ну надо же, а почему true?
Потому что работает, не учитывая регистра. Это очевидно :-) Но я не знаю, как еще ответить на твой вопрос :-)

[quote="Den Brown"][quote="Chiz"]system.debug('text' == q);      // true[/quote]
ну надо же, а почему true?[/quote]Потому что работает, не учитывая регистра. Это очевидно :-) Но я не знаю, как еще ответить на твой вопрос :-)

т.е. при сравнении Строк "как объектов" регист не учитывается...

т.е. при сравнении Строк "как объектов" регист не учитывается...

Den Brown
т.е. при сравнении Строк "как объектов" регист не учитывается...
Да. Вот только мне интересно, где это описанно в документации.

[quote="Den Brown"]т.е. при сравнении Строк "как объектов" регист не учитывается...[/quote]Да. Вот только мне интересно, где это описанно в документации.

Chiz
Den Brown
т.е. при сравнении Строк "как объектов" регист не учитывается...
Да. Вот только мне интересно, где это описанно в документации.

Пожалста, String comparison using == is case-insensitive

Это никакой не прикол и постоянно спрашивается на собеседованиях, например "сравните == в Apex/Java/C#" (во всех по разному, учитывая что в C# разшено переопределение). А после этого обычно спрашивают про взаимосвязь с getHashCode()

[quote="Chiz"][quote="Den Brown"]т.е. при сравнении Строк "как объектов" регист не учитывается...[/quote]Да. Вот только мне интересно, где это описанно в документации.[/quote]

Пожалста, [url=https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_expressions_operators_understanding.htm]String comparison using == is case-insensitive[/url]

Это никакой не прикол и постоянно спрашивается на собеседованиях, например "сравните == в Apex/Java/C#" (во всех по разному, учитывая что в C# разшено переопределение). А после этого обычно спрашивают про взаимосвязь с getHashCode()

Mike V
Пожалста, String comparison using == is case-insensitive

Это никакой не прикол и постоянно спрашивается на собеседованиях, например "сравните == в Apex/Java/C#" (во всех по разному, учитывая что в C# разшено переопределение). А после этого обычно спрашивают про взаимосвязь с getHashCode()


Спасибо!
Для меня это в диковинку. Меня такое спрашивали, когда я первый раз менял место работы. Ну и я не прошел туда, где такое спрашивали = )) Прошел на СФ проект с вопросами о 'мироздании' = ))

[quote="Mike V"]
Пожалста, [url=https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_expressions_operators_understanding.htm]String comparison using == is case-insensitive[/url]

Это никакой не прикол и постоянно спрашивается на собеседованиях, например "сравните == в Apex/Java/C#" (во всех по разному, учитывая что в C# разшено переопределение). А после этого обычно спрашивают про взаимосвязь с getHashCode()[/quote]
Спасибо!
Для меня это в диковинку. Меня такое спрашивали, когда я первый раз менял место работы. Ну и я не прошел туда, где такое спрашивали = )) Прошел на СФ проект с вопросами о 'мироздании' = ))

Dmitry Shnyrev
Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?

Ну значит ты никогда не сравнивал кейпрефиксы объектов :)

[quote="Dmitry Shnyrev"]Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?[/quote]

Ну значит ты никогда не сравнивал кейпрефиксы объектов :)

Напрямую не сравнивал.
Стараюсь избегать использовать их напрямую
Но я понял на что ты клонишь (они case sensitive).
Вот так делаю.

objectId.getsObjectType() == Schema.sObjectType.SomeCustomObject__c.getSObjectType()

Или это не работает?

Напрямую не сравнивал.
Стараюсь избегать использовать их напрямую
Но я понял на что ты клонишь (они case sensitive).
Вот так делаю.
[code]objectId.getsObjectType() == Schema.sObjectType.SomeCustomObject__c.getSObjectType()[/code]
Или это не работает?