2013-03-11 11 views
6

के साथ मुझे स्ट्रिंग कॉन्सटेनेशन से भ्रमित हो गया।जावा स्ट्रिंग कंसटेनेशन + ऑपरेटर

String s1 = 20 + 30 + "abc" + (10 + 10); 
String s2 = 20 + 30 + "abc" + 10 + 10; 
System.out.println(s1); 
System.out.println(s2); 

उत्पादन होता है:

50abc20
50abc1010

मुझे आश्चर्य है कि क्यों 20 + 30 दोनों ही मामलों में जोड़ दी जाती हैं, लेकिन 10 + 10 Parenthese की आवश्यकता होती है स्ट्रिंग (एस 2) से जुड़े होने के बजाय (एस 1) जोड़ने के लिए। कृपया बताएं कि स्ट्रिंग ऑपरेटर + यहां कैसे काम करता है।

+0

संभावित डुप्लिकेट [एक स्ट्रिंग शाब्दिक के बाद, सभी + स्ट्रिंग संयोजन ऑपरेटर क्यों माना जाएगा?] (http: // stackoverflow।कॉम/प्रश्न/34589340/बाद-ए-स्ट्रिंग-शाब्दिक-सब-द-ए-द-ए-द-स्ट्रिंग-कॉन्सटेनेशन-ऑपरेटैट) – Raedwald

उत्तर

10

अतिरिक्त सहयोगी छोड़ दिया गया है। पहले मामले

20+30+"abc"+(10+10) 
-----  ------- 
    50 +"abc"+ 20 <--- here both operands are integers with the + operator, which is addition 
    --------- 
    "50abc" + 20 <--- + operator on integer and string results in concatenation 
    ------------ 
     "50abc20"  <--- + operator on integer and string results in concatenation 

उठाते हुए दूसरे मामले में:

20+30+"abc"+10+10 
----- 
    50 +"abc"+10+10 <--- here both operands are integers with the + operator, which is addition 
    --------- 
    "50abc" +10+10 <--- + operator on integer and string results in concatenation 
    ---------- 
    "50abc10" +10 <--- + operator on integer and string results in concatenation 
    ------------ 
     "50abc1010" <--- + operator on integer and string results in concatenation 
1

संबद्धता का अवधारणा को जोड़ना, आप यह सुनिश्चित कर सकता है कि दो पूर्णांकों एक साथ कभी नहीं जोड़ रहे हैं कोष्ठकों का उपयोग हमेशा एक साथ एक स्ट्रिंग जोड़ी बनाने में से पूर्णांक तो वांछित concatenation ऑपरेशन एक अतिरिक्त के बजाय जगह ले जाएगा।

String s4 = ((20 + (30 + "abc")) + 10)+10; 

होगा उत्पादन:

2030abc1010 
0

आप कोई रिक्त स्ट्रिंग के साथ शुरू करने की आवश्यकता होगी।

तो, यह काम हो सकता है:

String s2 = ""+20+30+"abc"+10+10; 

या इस:

String s2 =""; 
s2 = 20+30+"abc"+10+10; 
System.out.println(s2); 
+0

पहला वाला ठीक है, दूसरा ऐसा नहीं करता है ... – ppeterka

0

आप कुछ नियम पता करने की जरूरत:
1, जावा ऑपरेटर प्राथमिकता, के सबसे बाएँ से सही
2, + से प्राथमिकता वाले ब्रैकेट प्राथमिकता।
3, परिणाम योग है, यदि + दोनों पक्ष पूर्णांक हैं, तो अन्यथा संगतता है।

+0

आपके मूल्यवान इनपुट के लिए धन्यवाद, यह वास्तव में मुझे अन्य समस्याओं में भी मदद करता है .. – shekhar

1

इसके अलावा, इस विषय में जोड़ने के लिए, जोनाथन Schober के जवाब का गलत भाग के रूप में मुझसे दूर टिप एक बात पर ध्यान में रखना:

a+=somethinga=a+<something> के बराबर नहीं है: += का मूल्यांकन करता है दाएं तरफ पहले, और केवल तभी इसे बाईं ओर जोड़ता है। तो यह फिर से लिखा जाना है, यह के बराबर है:

a=a+(something); //notice the parentheses! 

अंतर दिखा

public class StringTest { 
    public static void main(String... args){ 
    String a = ""; 
    a+=10+10+10; 

    String b = ""+10+10+10; 

    System.out.println("First string, with += : " + a); 
    System.out.println("Second string, with simple =\"\" " + b); 

    } 
} 
की
संबंधित मुद्दे