Есть ли какая-то концептуальная или принципиальная разница между equals и == ?
if ('text'.equals(str))
if ('text' == str)
Есть ли какая-то концептуальная или принципиальная разница между equals и == ? [code]if ('text'.equals(str))[/code] или [code]if ('text' == str)[/code]
Любимый вопрос на собеседованиях по java
Ответ не знаю, использую второе.
Любимый вопрос на собеседованиях по java :D Ответ не знаю, использую второе.
Про java я знаю прикол. В первом случае зравнивается строка, т.е. сами символы, а во втором объекты. Именно по-этому я использую везде первый вариант сравнения.
Но вот сейчас работаю со старым кодом и там много ==. Ну и мне немного облом переделывать на equals, т.к. не удобно будет птм смотреть что и как я поменял. Ну и плюс, менять шило на мыло не хочется. Вот и пытаюсь понять, есть ли разница в Apex.
[quote="Dmitry Shnyrev"]Любимый вопрос на собеседованиях по java :D Ответ не знаю, использую второе.[/quote] Про java я знаю прикол. В первом случае зравнивается строка, т.е. сами символы, а во втором объекты. Именно по-этому я использую везде первый вариант сравнения. Но вот сейчас работаю со старым кодом и там много ==. Ну и мне немного облом переделывать на equals, т.к. не удобно будет птм смотреть что и как я поменял. Ну и плюс, менять шило на мыло не хочется. Вот и пытаюсь понять, есть ли разница в Apex.
Сколько на своем веку повидал исходников (Apex) ни разу не видел в них equals!
Может не стоит заморачиваться?
Сколько на своем веку повидал исходников (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]
ну надо же, а почему true?
[quote="Chiz"]system.debug('text' == q); // true[/quote] ну надо же, а почему true?
[quote="Den Brown"][quote="Chiz"]system.debug('text' == q); // true[/quote] ну надо же, а почему true?[/quote]Потому что работает, не учитывая регистра. Это очевидно :-) Но я не знаю, как еще ответить на твой вопрос :-)
т.е. при сравнении Строк "как объектов" регист не учитывается...
т.е. при сравнении Строк "как объектов" регист не учитывается...
т.е. при сравнении Строк "как объектов" регист не учитывается...
[quote="Den Brown"]т.е. при сравнении Строк "как объектов" регист не учитывается...[/quote]Да. Вот только мне интересно, где это описанно в документации.
т.е. при сравнении Строк "как объектов" регист не учитывается...
Пожалста, 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()
Пожалста, 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] Спасибо! Для меня это в диковинку. Меня такое спрашивали, когда я первый раз менял место работы. Ну и я не прошел туда, где такое спрашивали = )) Прошел на СФ проект с вопросами о 'мироздании' = ))
Сколько на своем веку повидал исходников (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] Или это не работает?