जावा में एक ही मान के लिए कई चर शुरू करना


214

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

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

लेकिन मैं कुछ इस तरह की तलाश में हूँ:

String one,two,three = ""

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


5
दक्षता को ध्यान में रखें कि क्या है?
खटिक

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

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

4
मैंने प्रदर्शन के लिए जाँच की (java 8 पर) a = b = c = d = e = true से a = true की तुलना में 2x + गुना; बी = सच; और इसी तरह।
अमित कुमार गुप्ता

जवाबों:


319
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();

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


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

क्या ये वही वस्तु हैं? अगर मैं बाद में सच one = "cat"करूँगा two.equals("cat")?
असपितास

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

पूर्णांक घोषणाओं के बारे में क्या?
इगोरगानापल्स्की

यह कैलेंडर के साथ काम क्यों नहीं करता है? यदि आप ऐसा करते हैं कि प्रत्येक चर समान व्यवहार करता है जब आप उनमें से किसी एक में हेरफेर करते हैं
TheCrazyProfurer

59

आप कई चर घोषित कर सकते हैं, और कई चर शुरू कर सकते हैं, लेकिन एक ही समय में दोनों नहीं:

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

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


24
+1 यह इंगित करने के लिए कि वह जो करने की कोशिश कर रहा है वह आदर्श नहीं है।
ब्रायन रोच

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

23

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

आप इस तरह से कर सकते हैं .. लेकिन इससे बचने की कोशिश करें

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

8
क्या आप बता सकते हैं कि इससे क्यों बचा जाना चाहिए?
न्यूरॉन

@ लोनली न्यूरॉन मुझे लगता है कि अगर आप इसे इस तरह से इस्तेमाल करते हैं तो गलती करना आसान है।
युहंग लिन

3
@ युहांगलिन मैं एक बेहतर उत्तर की उम्मीद कर रहा था
न्यूरॉन

@ अच्छी तरह से यह एक धीमी गति के लिए अच्छा है। यह लगभग दोगुना समय लेता है जैसे कि आप बस अलग-अलग शुरू करते हैं। एक अन्य यह "सुविधा" अनावश्यक है। मैं एक ऐसे परिदृश्य के बारे में नहीं सोच सकता जो अलग दृष्टिकोण का उपयोग करके हल नहीं करेगा। यह बस एक साफ कोड नहीं कहा है।
अलेक्जेंडर हेम

@AlexanderHeim स्पष्टीकरण के लिए धन्यवाद। लेकिन मैंने जो कारण पूछा वह इसलिए था क्योंकि यह उत्तर का हिस्सा होना चाहिए।
न्यूरॉन

18

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

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

उत्परिवर्तित वर्गों के लिए

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

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


2
मैं "एक ही वस्तु की ओर इशारा करते हुए सभी संदर्भों से असहमत हूं और आपका कार्यक्रम दुर्व्यवहार करेगा।" एकमात्र समस्या यह है कि एक संदर्भ की वस्तु का क्या होता है, दूसरे संदर्भ की वस्तु के लिए होता है - क्योंकि यह एक ही वस्तु है। यह दुर्व्यवहार नहीं है; यह जावा कैसे काम करता है।
GKFX

"दुर्व्यवहार" से आपका क्या मतलब है? यह तब अलग-अलग 3 अलग-अलग प्रारंभिक वस्तुओं का व्यवहार करेगा, लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आप क्या चाहते हैं ..
न्यूरॉन

12

तुम यह केर सकते हो:

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

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


2

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

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


0

इसके लिए बहुत देर हो चुकी है लेकिन मैंने जो सबसे सरल तरीका पाया है वह है:

String foo = bar = baz = "hello"
println(foo)
println(bar)
println(baz)

आउटपुट:

hello
hello
hello
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.