|
|
|
Спавнение 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 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=32912051&tid=2152946]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 431ms |

| 0 / 0 |
