[ 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

[ sale83 @ 12.09.2006. 10:24 ] @
izgleda da sam skontao o cemu je rec....

Ipak je upitanju taj prioritet koji ima + u odnosu na == kao sto sam i reko gore... lol :)


Poz
sale
[ Java Beograd @ 15.09.2006. 15:39 ] @
Sale, Sale ... ne citas tare postove !
Operand '==' ne uporedjuje vrednost objekata tipa string, vec identicnost reference objekta

Za uporedjenje vrednosti objekta tipa String se koristi :

myString1.equals("Miki")
[ anon315 @ 15.09.2006. 15:53 ] @
I ne samo String, nego i bilo koje omotacke klase, na primer Integer...

Ali ovo se najbolje nauci kada 3 sata sedis, gledas i nije ti jasno zasto se nikad ne udje u if deo :D
[ staticInt @ 16.09.2006. 19:45 ] @
To se desava kad se ne nauce osnove nego se krene sbrda na dole.
Java stvara mnoge konfuzije ako je ucite kao prvi programski jezik, mislim da bi svako kretanje sa Javom prvo trebalo utemeljiti dobrim poznavanjem jezika C da bi se jednostavno shvatile osnove i kako stvari funkcionisu.

Desavalo mi se da ljudi koji 3-4 godine programiraju u Javi ne znaju sta je pointer...
[ djalfirevic @ 17.09.2006. 20:44 ] @
Citat:
staticInt: To se desava kad se ne nauce osnove nego se krene sbrda na dole.
Java stvara mnoge konfuzije ako je ucite kao prvi programski jezik, mislim da bi svako kretanje sa Javom prvo trebalo utemeljiti dobrim poznavanjem jezika C da bi se jednostavno shvatile osnove i kako stvari funkcionisu.

Desavalo mi se da ljudi koji 3-4 godine programiraju u Javi ne znaju sta je pointer...


Slazem se sa ovim.
[ sale83 @ 18.09.2006. 08:43 ] @
Citat:
Java Beograd: Sale, Sale ... ne citas tare postove !
Operand '==' ne uporedjuje vrednost objekata tipa string, vec identicnost reference objekta

Za uporedjenje vrednosti objekta tipa String se koristi :

myString1.equals("Miki")


To da priznam nisam citao stare postove (nije mi trebalo ==)...

Drugo ja dobro znam sta je == i sta je equals i kako se ponasaju...

Nije me zbunjivalo equals ili == vec operator + ....


Poz
sale



[ sosingus @ 18.09.2006. 13:00 ] @
Pogledaj ovaj npr. link
http://www.uni-bonn.de/~manfear/javaoperators.php
analiziraj kod i videces zasto
Code:

System.out.println("s1 == Java: " +  s1 == "Java");// FALSE

ispisuje samo false, a ne ono sto ocekujes.
[ sale83 @ 18.09.2006. 14:36 ] @
Citat:
sosingus: Pogledaj ovaj npr. link
http://www.uni-bonn.de/~manfear/javaoperators.php
analiziraj kod i videces zasto
Code:

System.out.println("s1 == Java: " +  s1 == "Java");// FALSE

ispisuje samo false, a ne ono sto ocekujes.



Zar ne vidis da sam odma u drugom postu napisao da sam shvatio da je upitanju prioritet i da znam sta se desava....
Znaci nema sta vise da se raspravlja....


Poz
sale


[ sosingus @ 18.09.2006. 15:26 ] @
jest, sorry!