Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Java BUG ??? System.out.println() ???

[es] :: Java :: Java BUG ??? System.out.println() ???

[ Pregleda: 3038 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Java BUG ??? System.out.println() ???12.09.2006. u 10:12 - pre 183 meseci
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


Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Re: Java BUG ??? System.out.println() ???12.09.2006. u 10:24 - pre 183 meseci
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
Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 8596
..yu.220.247.194.in-addr.arpa.



+9845 Profil

icon Re: Java BUG ??? System.out.println() ???15.09.2006. u 15:39 - pre 182 meseci
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")
Ljudi koji su skloni teorijama zavere osećaju se posebno, jer sebe vide kao nekoga ko je bolje informisan od drugih o važnim društvenim i političkim događajima. Zbog ovih razloga teoretičari zavere su često i narcisoidni.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
212.200.221.*



+13 Profil

icon Re: Java BUG ??? System.out.println() ???15.09.2006. u 15:53 - pre 182 meseci
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
 
Odgovor na temu

staticInt

Član broj: 66101
Poruke: 485
80.93.248.*



+43 Profil

icon Re: Java BUG ??? System.out.println() ???16.09.2006. u 19:45 - pre 182 meseci
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...
 
Odgovor na temu

djalfirevic

Član broj: 76932
Poruke: 497
*.dynamic.sbb.co.yu.



Profil

icon Re: Java BUG ??? System.out.println() ???17.09.2006. u 20:44 - pre 182 meseci
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.
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Re: Java BUG ??? System.out.println() ???18.09.2006. u 08:43 - pre 182 meseci
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




Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.grappoloin.com.

Sajt: www.sportin.biz


Profil

icon Re: Java BUG ??? System.out.println() ???18.09.2006. u 13:00 - pre 182 meseci
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.
 
Odgovor na temu

sale83
Australia
Sydney

Član broj: 41625
Poruke: 729
*.ispone.net.au.



+30 Profil

icon Re: Java BUG ??? System.out.println() ???18.09.2006. u 14:36 - pre 182 meseci
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



Sto mozes danas ne ostavljaj za sutra!
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.grappoloin.com.

Sajt: www.sportin.biz


Profil

icon Re: Java BUG ??? System.out.println() ???18.09.2006. u 15:26 - pre 182 meseci
jest, sorry!
 
Odgovor na temu

[es] :: Java :: Java BUG ??? System.out.println() ???

[ Pregleda: 3038 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.