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ě” :-).