[ sale83 @ 12.09.2006. 10:12 ] @
Code: public class JavaBug { public static void main(String[] args) { // jdk1.5.0_07 - Windows XP SP2 String s1 = "Java"; //Ispisuje: false System.out.println("s1 == Java: " + s1 == "Java");// FALSE //Ispisuje: (s1 == Java): true System.out.println("(s1 == Java): " + (s1 == "Java"));// TRUE //Ispisuje: s1.equals("Java"): true System.out.println("s1.equals(\"Java\"): " + (s1.equals("Java")));// TRUE } } Pokrenite ovaj kod i videcete o cemu je rec.. Znaci umesto da ovaj code: Code: System.out.println("s1 == Java: " + s1 == "Java");// FALSE Ispise: s1 == Java: false On ispisuje samo false ... E sad zasto se taj kod ne ponasa isto kako kad stavim u zagrade (s1 == "Java") ?? Znaci Zagrade imaju prioritet izvrsavanja to ja razumem.. Ali isto bi trebalo da bude i bez zagrade tj da dobijem isti rezultat.. Zasto se gubi text ovde: System.out.println("s1 == Java: " + s1 == "Java");// FALSE I ispisuje samo false ??? Gde je nestao text s1 == Java: ?? ili recimo: Code: public class JavaBug { public static void main(String[] args) { // jdk1.5.0_07 - Windows XP SP2 String s1 = "Java"; //Treba da ispise: s1 == Beginning Java: false END ali spisuje samo false System.out.println("Beginning s1 == Java: " + s1 == "Java" + "END");// FALSE //Displays: (s1 == Java): true System.out.println("(s1 == Java): " + (s1 == "Java"));// TRUE //Displays: s1.equals("Java"): true System.out.println("s1.equals(\"Java\"): " + (s1.equals("Java")));// TRUE } } U ovome codu ima da se izgubi i pocetak i kraj stringa i ispisace samo FALSE umesto da ispise: Beginning s1 == Java: false END Inace znam da + ima veci prioritet u odnosu na == S toga dobijamo: ("s1 == Java: "+s1) == "Java" ??? sto naravno rezultira ka false ?? Ili ("Beginning s1 == Java: " + s1 ) == "Java" + ("END")// FALSE Sta vi mislite o ovome ?? Poz sale |