2011-06-01 7 views
153

में एक ही मान के लिए एकाधिक चर शुरू करना मैं एक ही प्रकार के एक ही प्रकार और एक ही मान के कई चर घोषित करने की एक स्वच्छ और कुशल विधि की तलाश में हूं। अभी मेरे पास है:जावा

String one = "", two = "", three = "" etc... 

लेकिन मैं की तरह कुछ के लिए देख रहा हूँ:

String one,two,three = "" 

है यह कुछ ऐसा है जावा में करने के लिए संभव है? दिमाग में दक्षता रखते हुए।

संपादित करें: कई सदस्यों ने इंगित किया है कि यह आदर्श नहीं है और अधिकांश लोगों को भ्रमित कर देगा। इस बारे में बताने के लिए शुक्रिया। मुझे लगता है कि मैं इस कार्यान्वयन से दूर रहना चाहता हूं, लेकिन मैं नीचे दिए गए उत्तरों की बहुत सराहना करता हूं।

+3

_ क्या मन की दक्षता में दक्षता रखें? – khachik

+9

कोड की लंबाई, टाइप करने का समय, दृष्टि से सरल। मेरा मतलब वही था। मुझे पता है कि रिमोट मेमोरी मेमोरी को आरक्षित कर रही है और यह सवाल चीजों के 'मानव' पक्ष से संबंधित है। – user83643

+1

मैं कहूंगा कि यह आमतौर पर स्वीकृत जावा सम्मेलनों के खिलाफ है, यह पाठक को आश्चर्यचकित करेगा और आईएमएचओ को अलग-अलग लाइनों पर घोषित करने से पढ़ने के लिए कठिन है। – Simeon

उत्तर

247
String one, two, three; 
one = two = three = ""; 

यह अपरिवर्तनीय वस्तुओं के साथ काम करना चाहिए। यह उदाहरण के लिए म्यूटेबल ऑब्जेक्ट्स के लिए कोई समझ नहीं लेता है:

Person firstPerson, secondPerson, thirdPerson; 
firstPerson = secondPerson = thirdPerson = new Person(); 

सभी चर एक ही उदाहरण को इंगित करेंगे। शायद उस मामले में आपको क्या चाहिए:

Person firstPerson = new Person(); 
Person secondPerson = new Person(); 
Person thirdPerson = new Person(); 

या बेहतर अभी तक एक सरणी या संग्रह का उपयोग करें।

+6

ऐसे मामले हैं जहां यह परिवर्तनीय वस्तुओं के लिए भी समझ में आता है। उदाहरण के लिए, लिंक्डलिस्ट कार्यान्वयन के निर्माता में जहां प्रारंभ में: सिर = पूंछ = नया नोड (मान)। तो दोनों सिर और पूंछ एक ही संदर्भ को इंगित करना चाहिए। – bcorso

+0

क्या ये वही वस्तु हैं? अगर मैं बाद में 'एक = "बिल्ली" '' होगा। असमान ("बिल्ली")' सच वापस आती है? – Aequitas

+0

एकमात्र चेतावनी यह है कि यह स्थैतिक चर के लिए काम नहीं करेगा। –

2

मुझे लगता है कि नहीं लगता कि आप सभी मूल्यों individualling सेट करने के लिए संभव है (पहला उदाहरण आपके द्वारा दी गई है।)

दूसरा उदाहरण आप दे दी है, केवल पिछले varuable प्रारंभ होगा करने के लिए "" और नहीं अन्य शामिल हैं।

15

नहीं, जावा में यह संभव नहीं है।

आप इस तरह से कर सकते हैं .. लेकिन से बचने का प्रयास करें।

String one, two, three; 
one = two = three = ""; 
37

आप कई चर घोषणा कर सकते हैं, और कई चर असाइन करते हैं, लेकिन दोनों नहीं एक ही समय में:

String one,two,three; 
one = two = three = ""; 

हालांकि, बात इस तरह का (विशेष रूप से कई काम) सबसे जावा डेवलपर्स द्वारा पर सिकोड़ी किया जाएगा , जो इसे "दृश्यमान सरल" के के विपरीत मानेंगे।

+15

+1 में हेरफेर करते हैं, यह इंगित करने के लिए कि वह क्या करने का प्रयास कर रहा है * मानक नहीं है। –

+0

यह स्ट्रिंग के लिए है, लेकिन पूर्णांक के लिए कैसे ?? int दिन, महीना, वर्ष, घंटा, मिनट = दिन = महीना = वर्ष = घंटा = 0; क्या यह सही है ?? – Ranjit

+0

@ रणजीतपाटी: यह बिल्कुल स्ट्रिंग्स के साथ काम करता है। –

11

स्ट्रिंग, रैपर वर्ग कैरेक्टर, बाइट जैसे प्राइमेटिव्स और अपरिवर्तनीय वर्गों के लिए काम करता है।

int i=0,j=2
String s1,s2
s1=s2="java rocks"

परिवर्तनशील कक्षाएं

लिए

Reference r1= Reference r2= Reference r3=new Object();

तीन संदर्भ + एक वस्तु बनाई गई हैं। सभी ऑब्जेक्ट्स और आपके प्रोग्राम को इंगित करने वाले सभी संदर्भ गलत व्यवहार करेंगे।

+0

मैं इस बात से असहमत हूं "सभी संदर्भ एक ही ऑब्जेक्ट को इंगित करते हैं और आपका प्रोग्राम गलत व्यवहार करेगा।" एकमात्र समस्या यह है कि एक संदर्भ की वस्तु के साथ क्या होता है किसी अन्य संदर्भ की वस्तु के साथ होता है - क्योंकि यह वही वस्तु है। यह दुर्व्यवहार नहीं है; जावा जावा काम करता है। – GKFX

6

आप ऐसा कर सकते हैं:

String one, two, three = two = one = ""; 

लेकिन ये एक ही उदाहरण के लिए सभी बिंदु होगा। यह अंतिम चर या आदिम प्रकारों के साथ समस्या नहीं पैदा करेगा। इस तरह, आप सब कुछ एक पंक्ति में कर सकते हैं।