|
|
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Какая разница между сравнением String значений используя ".equals" b "=="? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:45 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
попробуй: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 1 и 2 - сравниваются значения объектов (и будет true и true) 3 и 4 - сравниваются ссылки на объекты (будет true и false) -- Lacrima Mosa Est ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:50 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
String s1="a"; String s2="a"; s1 == s2 -> false s1.equals(s2) -> true В первом случае сравниваются ссылки на объекты s1 и s2, а во втором случае сравниваются значения, на которые указывают эти ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:51 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Грасоff как всегда, в перед планеты всей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:53 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
wessenГрасоff как всегда, в перед планеты всей :)стораюсь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 15:58 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ wessenГрасоff как всегда, в перед планеты всей :)стораюсь! Вот торопыга! Я не успел ответ продумать - Грасов уже запостил. Ай молодца! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 16:26 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
mayton А.Грасоff™ wessenГрасоff как всегда, в перед планеты всей :)стораюсь! Вот торопыга! Я не успел ответ продумать - Грасов уже запостил. Ай молодца!спосибо на хлеп ниномажыш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 16:31 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Спасибо за быстрый ответ. А какая разница между такими сравнениями: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 16:59 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Борщов А.ССпасибо за быстрый ответ. А какая разница между такими сравнениями: Код: plaintext 1. 2. 3. s1 == "test" - по сути в месте где "test" создается новый объект (соотв. и ссылка на него уже уникальна) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:01 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Борщов А.ССпасибо за быстрый ответ. А какая разница между такими сравнениями: Код: plaintext 1. 2. 3. s1 == "test" - по сути в месте где "test" создается новый объект (соотв. и ссылка на него уже уникальна) То есть сравнение s1=="test" не имеет смысла т.к. всегда будет false. Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:04 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Борщов А.С А.Грасоff™ Борщов А.ССпасибо за быстрый ответ. А какая разница между такими сравнениями: Код: plaintext 1. 2. 3. s1 == "test" - по сути в месте где "test" создается новый объект (соотв. и ссылка на него уже уникальна) То есть сравнение s1=="test" не имеет смысла т.к. всегда будет false. Правильно?да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 17:04 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Борщов А.С А.Грасоff™ Борщов А.ССпасибо за быстрый ответ. А какая разница между такими сравнениями: Код: plaintext 1. 2. 3. s1 == "test" - по сути в месте где "test" создается новый объект (соотв. и ссылка на него уже уникальна) То есть сравнение s1=="test" не имеет смысла т.к. всегда будет false. Правильно?да Если s1 было получено путём присвоения s1= "test" или s1 = new String("test").intern(), то будет true. Разница между S==s1, S.equals(s1) и S== s1.intern() - 200, 1200 и 12000 ms на 10000000 сравнений %) Смысл использовать intern() появляется только, если нужно из кучи (>10) стринговых констант найти равную s1 (и точно известно, что s1 есть в этом множесте). Правда в таком случае использование hashmap будет более оправдно, т.к. там используется hashcode строки. На практике Код: plaintext 1. Код: plaintext 1. 2. При использовании Код: plaintext 1. Если S==S1, оно в два раза лучше, чем у первого варианта. Если S==S20, то в два раза лучше чем у второго %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 10:50 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Доп.инфа :) Если s - это клон констант (new String(S1)), то, при равномерном распределении s по возможным значениям, первые два варианта работают практически одинаково - 20 секунд. Третий - 10 секунд. Если s - это сама константа (s = S1), то первые два варианта работают 17-18 секунд. Третий - 1,5(!) секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 11:51 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsДоп.инфа :) Если s - это клон констант (new String(S1)), то, при равномерном распределении s по возможным значениям, первые два варианта работают практически одинаково - 20 секунд. Третий - 10 секунд. Если s - это сама константа (s = S1), то первые два варианта работают 17-18 секунд. Третий - 1,5(!) секунд. Делается 20,000,000 вызовов: Если заменить константы управляющие действием на наследование, то получим 671мс. Если использовать класс констант и == (т.е. вариации на тему final static Object S1 = new Object(); и ветвления if (s==S1){..) - то 571мс Если использовать Enum и switch для ветвления - 471 мс. Если использовать Enum и прямой вызов метода - 371 мс. Получается, что паттрен стратегия реализованный через enum, будет экономить 15-ть наносекунд на один вызов метода foo() %) Хотя возможно, это всё происки jit с inline'ами, т.к. код очень простой. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Короче говоря 1) String в качестве константы - плохое решение. 2) Конструкция if s1.equals(s2) else if ... не идеальна. 3) какое всё это имеет отношение к исходному посту - не знаю %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 13:27 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Борщов А.Сне имеет смысла т.к. всегда будет false. Правильно?да Граспых, я тебя поправлю ;-) . В общем случае ты _неправ_. Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как думаешь, что он напишет? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 19:10 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Любопытно. Похоже что компиллятор оптимизировал код и устранил лишнюю константу. Поэтому и ссылки указывают на один адрес. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2005, 19:50 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
stdio А.Грасоff™ Борщов А.Сне имеет смысла т.к. всегда будет false. Правильно?да Граспых, я тебя поправлю ;-) . В общем случае ты _неправ_. Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как думаешь, что он напишет? ;-) идиоцкий код. ты фсегда так пишыш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 09:49 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
Забавно , на собеседовании в одной конторе задавали такой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 16:45 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
maytonЛюбопытно. Похоже что компиллятор оптимизировал код и устранил лишнюю константу. Поэтому и ссылки указывают на один адрес. Это не компилятор, а спецификация. "xx" и "xx" не две константы, а ссылки на одну константу из пула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 11:05 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs maytonЛюбопытно. Похоже что компиллятор оптимизировал код и устранил лишнюю константу. Поэтому и ссылки указывают на один адрес. Это не компилятор, а спецификация. "xx" и "xx" не две константы, а ссылки на одну константу из пула. Опа! А я что не компиллятором пользовался? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 11:18 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
maytonОпа! А я что не компиллятором пользовался? :) Не знаю чем вы пользовались, но описанное выше поведение - спецификация языка, а не "умность или оптимизированность" компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 11:57 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs maytonОпа! А я что не компиллятором пользовался? :) Не знаю чем вы пользовались, но описанное выше поведение - спецификация языка, а не "умность или оптимизированность" компилятора. (хмуро) Я тебе чем-то неугодил? Почему в друх топиках чинишь расправу? P.S. Ничего личного. Просто непонятки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 12:10 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
mayton NotGonnaGetUs maytonОпа! А я что не компиллятором пользовался? :) Не знаю чем вы пользовались, но описанное выше поведение - спецификация языка, а не "умность или оптимизированность" компилятора. (хмуро) Я тебе чем-то неугодил? Почему в друх топиках чинишь расправу? P.S. Ничего личного. Просто непонятки. Я? :) Не было такого. На мой взгляд разница между "по спецификации" и "компилятор с оптимизировал" принципиальная. Плохо, если кто-нибудь прочитает и запомнить не правильную вещь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 12:28 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs На мой взгляд разница между "по спецификации" и "компилятор с оптимизировал" принципиальная. Плохо, если кто-нибудь прочитает и запомнить не правильную вещь. Ладно проехали. Извини если что не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 12:35 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
manschЗабавно , на собеседовании в одной конторе задавали такой вопросВопрос-то не совсем корректный... Знание языка как такового он особо не демонстрирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 13:00 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
stdio manschЗабавно , на собеседовании в одной конторе задавали такой вопросВопрос-то не совсем корректный... Знание языка как такового он особо не демонстрирует. А что демонстрирует знание языка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 13:10 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs stdio manschЗабавно , на собеседовании в одной конторе задавали такой вопросВопрос-то не совсем корректный... Знание языка как такового он особо не демонстрирует. А что демонстрирует знание языка?ХЗ. М.б. умение эффективно дорписывать чужие исходники... Но это вопрос который задан на собеседовании точно ни о чём не говорит, потому что знание этой особенности работы со строковыми литералами в Java как-то малопригодно для нормального человека: чего мы хотим добиться, сравнивая ссылки? Узнать что на один и тот же объект ссылаются ссылки? Ну хорошо, узнали. Что дальше? Всё равно объект класса String мы изменить не можем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 14:05 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
stdioХЗ. М.б. умение эффективно дорписывать чужие исходники... Но это вопрос который задан на собеседовании точно ни о чём не говорит, потому что знание этой особенности работы со строковыми литералами в Java как-то малопригодно для нормального человека: чего мы хотим добиться, сравнивая ссылки? Узнать что на один и тот же объект ссылаются ссылки? Ну хорошо, узнали. Что дальше? Всё равно объект класса String мы изменить не можем. "Что дальше" зависит от ситуации. Иногда имеет смысл сравнивать объекты по ссылкам, а не по equals :) А что до самого вопроса, то он как раз говорит о том, насколько хорошо человек знает язык, на котором собирается писать. Для того, что бы выяснить насколько хорошо человек умеет работать с чужим кодом - нужно задавать другие вопросы. Что бы узнать насколько он силён в алгоритмах тертьи, в ООП четвётые, какие технологии/библиотеки знает/умеет пользоваться - пятые. Говорить не корректно - не корректно, всё зависит от того, на какую позицию претендует человек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 16:10 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsГоворить не корректно - не корректно, всё зависит от того, на какую позицию претендует человек :)Шутник. Тогда уж лучше спрашивать вопросы типа: а зачем нужен класс String, если имеется StringBuffer Как Вы думаете, почему public static void main(String[] args) throws Exception { float f = 2.34f; double d = f; System.out.println(d); } возвращает 2.3399999141693115? А почему в C# нельзя вызвать статический метод через ссылку на объект, а Java - можно? Какой в этом смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 20:14 |
|
||
|
Спавнение String значений. ".equals" или "==" ?
|
|||
|---|---|---|---|
|
#18+
stdio NotGonnaGetUsГоворить не корректно - не корректно, всё зависит от того, на какую позицию претендует человек :)Шутник. Тогда уж лучше спрашивать вопросы типа: а зачем нужен класс String, если имеется StringBuffer Как Вы думаете, почему public static void main(String[] args) throws Exception { float f = 2.34f; double d = f; System.out.println(d); } возвращает 2.3399999141693115? А почему в C# нельзя вызвать статический метод через ссылку на объект, а Java - можно? Какой в этом смысл? :) Можно и такие. Только акцент, imho, должен быть сдвинут в другую сторону. Например: В чём основная разница между String, StringBuffer, StringBuilder, когда какой из них лучше использовать. А a = null; a.staticMethod(); - будет NPE или нет? И т.п. Иначе вопросы превратся в филосовскую беседу о смысле жизни %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 11:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2152946]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 376ms |

| 0 / 0 |
