Porovnavani retezcu

konf na chalu.cz konf na chalu.cz
Čtvrtek Leden 29 11:34:54 CET 2004


to mate tak. 
pro pripad porovnavani
String str = "ales";
if (str == "ales") { neco; }; 
porovnavate objekt str s obkejtem "ales", coz samozrejme neni, proto vraci false 
(zde si vsak nejsem 100% jisty ze je to prave takto, nicmene z principu to takto
nejde).
Tuto konstrukci vsak pouzijete pro porovnavani primitivnich datovych typu (teba
int, double atd, cili hodne zjednodusene - toho co zacina malym pismenem)

Pokud chcete porovnavat objekt, musite porovnavat jeho obsah, cili budete se
ptat nikoliv zda 
str je "ales" ale zda str obsahuje "ales", tedy str.equals("ales")

podobne viz vyse zmineny, plate ze treba :
Integer I = new Integer(1)
if(I.equals(1))...
ale:
int i = 1;
if(i==1)...

Stejne tak Double a double atd.

Jirka
Cituji z emailu od Aleš Vašíček <vasicek na ecommerce.cz>:

> Dobry den,
> 
> 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...
> 
> 
> dalsi zacatecnicka otazka je, jakym zbusobem zadam prazdny retezec napriklad
> do fce replace. Napriklad bych chtel vyhodit vsechny znaky 'a' v retezci:
> 
> Dummy = Dummy.replace('a', ''); 
> 
> tato konstrukce v c# normalne funguje, ale java mi vyhlasi: "empty character
> literal". Co s tim?

pouzijte String.replaceAll("a", "");
(od javy 1.4, pro drivejsi verze musite pouzit externi knihovny regularnich
vyrazu, napr. Jakarta Oro a pod.

> 
> 
> a posledni veci ktera me zajima je, jestli ma java nejakou podobnou kostrukci
> jako je v delphi:
> if (Znak in ['A'..'Z', '0'..'9']) then ... else ...
> 
> 
> 
> 
> Prominte takoveto zacatecnicke otazky, ale zacatky jsou tezke....
> Diky, Ales
> 
> 





Další informace o konferenci Konference