Porovnavani retezcu

Jaroslav Kameník kamenik.jaroslav na globe.cz
Čtvrtek Leden 29 11:50:05 CET 2004


> muze mi nekdo vysvetlit jak funguje porovnavani retezcu v jave? Napriklad
v C# funguje konstrukce:
> String str = "ales";
> if (str == "ales") { neco; }; ?

> ale v jave je tato podminka porad false. Proc? Vim sice o moznosti
str.equals, ale zajima me to spis z principu...

A tohle je presne zneni kodu nebo je to jen zjednoduseny priklad?
Ono zrovna v tomhle tvaru by to imho melo naopak stale vracet true, protoze
porovnavate dve textove konstanty a ,pokud se nepletu, dle specifikace by
od kazde textove konstanty mela v ramci VM existovat jen jedna instance.

jinak plati to, co uz sem psali ostatni, == testuje identitu objektu, equals
ekvivalenci.

takze napr. pro nasledujici retezce vytvorene az za behu VM
System.out.println(Integer.toString(123456789) ==
Integer.toString(123456789)); ===> false

System.out.println(Integer.toString(123456789).equals(Integer.toString(12345
6789))); ===> true

V C# se moc nevyznam, ale predpokladam, ze to tam funguje tak, ze maji
pretizeny operator ==   (FUUJ;)



Jarda



Další informace o konferenci Konference