Ano, odpovedel jste si spravne. -- Tomas Pitner
2011/3/3 Libor Jelinek <[email protected]>: > Dobrý den! > Dneska jsem se zarazil nad jedním problém ke kterému neumím nalést > vysvětlení. Proto bych se chtěl tímto zeptat zkušenějších. Mám tento > program: > > public class SchedulerLauncher { > public static void main(String[] args) { > if (args[0].equals("-h")) { // a) vyhodnoceno na true > //if (args[0] == "-h") { // b) vyhodnoceno na false-proč? > System.out.println("...sem prijde napoveda..."); > } > } > } > > Ten spustím jako $ java SchedulerLauncher -h. Čekal bych, že obě podmínky a) > i b) jsou rovnocené, ale jen ta a) s využitím String.equals() je se > vyhodnotí jako pravda. Proč ne ta druhá? > > Tuším, že to bude jistě něco s "ukazateli" (promiňte mi ten výraz, vím v > Javě nejsou). args[0] je vlastně reference na objekt String v paměti. A "-h" > čili new String("-h") je též reference, ale na jiný objekt, byť textový > obsah je stejný. Operátor == porovnává adresy (referrence), nikoli > vlastnosti objektu. > > Vysvětluji si to správně? Díky. > Libor >
