Když jsem zhruba před rokem nastoupil do nového zaměstnání, objevil jsem při brouzdání kódem jednoho z našich větších projektů zajímavou fintu. Ti zkušenější z vás to už asi budou znát, ale kdo po zkušenostech teprve touží, nechť se společně se mnou podívá na tento krátký příspěvek.
Mějme tyto 2 úryvky kódu:
a.equals("b");
a
"b".equals(a);
Jaký byste řekli, že je mezi těmito dvěma kódy rozdíl?
Řešení: Druhá varianta nikdy nespadne na NullPointerException. Proto vždy, když potřebujete porovnat řetězec se Stringovou proměnnou, bych vám doporučil používat druhou variantu, a to i přesto, že možná vypadá trochu méně “přirozeně” :-).