2016-06-24 10 views
7

Próbuję zrozumieć działanie System.out.println() w Javie ... w następujący 2 fragment kodu, dlaczego odpowiedź jest inna i dlaczego nie wydrukować ciąg "Hello:" wewnątrz metody println()?metoda println() w Javie na równość łańcuchów ... i jak to działa dokładnie?

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); 
     } 

} 

Odpowiedź brzmi:

false 
x.equals(y): true 
false 

A dla kodu drugim fragmencie:

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); 
     } 

} 

Odpowiedź brzmi:

true 
x.equals(y): true 
true 

Odpowiedz

12

Wynika to operator precedence: "Hello:" + x == y jest równoważna do ("Hello:" + x) == y.

Ponieważ + ma wyższy priorytet niż ==.

+0

Thanks @assylias .... Tak, mam teraz ... ,, Teraz kładę nawiasy wokół x == y i to działa dobrze. np. System.out.println ("Hello:" + (x == y)); – Ani2l

Powiązane problemy