2016-06-24 10 views
7

मैं जावा में System.out.println() के काम को समझने की कोशिश कर रहा हूं ... निम्नलिखित 2 कोड स्निपेट में, उत्तर अलग क्यों है और क्यों यह println() विधि के अंदर "हैलो:" स्ट्रिंग मुद्रित नहीं करता है?println() विधि ... और यह वास्तव में कैसे काम करता है?

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

} 

जवाब है:

false 
x.equals(y): true 
false 

और दूसरा कोड स्निपेट के लिए:

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

} 

जवाब है:

true 
x.equals(y): true 
true 

उत्तर

12

यह operator precedence की वजह से है: "Hello:" + x == y बराबर है 01 तक।

क्योंकि +== तुलना में एक उच्च पूर्वता है।

+0

धन्यवाद @assylias .... हाँ, मैं यह अब ... ,, अब मैं एक्स == आसपास कोष्ठक y डाल मिला है और यह ठीक काम करता है। उदाहरण System.out.println ("हैलो:" + (x == y)); – Ani2l

2

पहले एक झूठी लौटा रहा है क्योंकि + ऑपरेटर == ऑपरेटर से उच्च प्रधानता यह भी सच है वापस आ जाएगी है अगर आप अपने कोड के स्थान पर
System.out.println("Hello:" + (x == y));

तुम भी के लिए == में अंतर देख सकते हैं और विधि के बराबर होती है उल्लेख कर सकते हैं यहां
What is the difference between == vs equals() in Java?

क्योंकि मैं भी यही कहूंगा।

और ऑपरेटर पूर्वता के लिए यह देख ..
http://introcs.cs.princeton.edu/java/11precedence/

संबंधित मुद्दे