2016-06-24 15 views
7

Sto cercando di capire il funzionamento di System.out.println() in Java ... nel seguire 2 snippet di codice, perché la risposta è diversa e perché non stampa "Hello:" stringa nel metodo println()?metodo println() in Java per l'uguaglianza delle stringhe ... e come funziona esattamente?

public static void main(String[] args) { 
     String x = "abc"; 
     String y = "abc"; 
     System.out.println("Hello:" + x == y); 
     System.out.println("x.equals(y): " + x.equals(y)); 

     if(x == y){ 
      System.out.println("Hello:" + x==y); 
     } 

} 

risposta è:

false 
x.equals(y): true 
false 

E per il secondo frammento di codice:

public static void main(String[] args) { 
     String x = "abc"; 
     String y = "abc"; 

     System.out.println(x == y); 

     System.out.println("x.equals(y): " + x.equals(y)); 

     if(x == y){ 
      System.out.println(x==y); 
     } 

} 

La risposta è:

true 
x.equals(y): true 
true 

risposta

12

Ciò è dovuto al operator precedence: "Hello:" + x == y è equivalente a ("Hello:" + x) == y.

Perché + ha una precedenza superiore a ==.

+0

Grazie .... Sì, ho capito ora ... ,, Ora ho messo tra parentesi intorno x == y e funziona benissimo. ad esempio System.out.println ("Hello:" + (x == y)); – Ani2l