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