জাভাতে একই মানের একাধিক ভেরিয়েবল শুরু করা


214

আমি একই ধরণের এবং একই মানের একাধিক ভেরিয়েবল ঘোষণার জন্য একটি পরিষ্কার এবং দক্ষ পদ্ধতির সন্ধান করছি। এখনই আমার আছে:

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

তবে আমি এরকম কিছু খুঁজছি:

String one,two,three = ""

এটি কি এমন কিছু যা জাভাতে সম্ভব? দক্ষতা মাথায় রেখে।


5
দক্ষতার কথা মাথায় রাখুন কী?
খচিক

15
কোডের দৈর্ঘ্য, টাইপ করার সময়, চাক্ষুষভাবে সহজ। যেটা আমি মনে করছি. আমি জানি যে সংরক্ষণের স্মৃতি মেমরি সংরক্ষণ করে এবং এই প্রশ্নটি 'মানবিক' বিষয়ের সাথে সম্পর্কিত।
ব্যবহারকারী 83643

1
আমি বলব যে এটি সাধারণত গৃহীত জাভা কনভেনশনগুলির বিরুদ্ধে, এটি পাঠককে অবাক করে দেয় এবং আইএমএইচওগুলি পৃথক লাইনে ঘোষণা করার চেয়ে পড়া আরও শক্ত।
সাইমন

4
আমি পারফরম্যান্সের জন্য পরীক্ষা করেছি (জাভা ৮-এ) a = b = c = d = e = সত্য সময় লাগে = সত্যের চেয়ে 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
এমন কেস রয়েছে যেখানে এটি পরিবর্তনীয় জিনিসগুলির জন্যও অর্থবোধ করে। উদাহরণস্বরূপ, লিঙ্কলিস্ট বাস্তবায়নের নির্মাতায় যেখানে প্রাথমিকভাবে: মাথা = লেজ = নতুন নোড (মান)। সুতরাং মাথা এবং লেজ উভয় একই রেফারেন্স নির্দেশ করা উচিত।
bcorso

এগুলি কি একই জিনিস? আমি যদি পরে করি তবে one = "cat"কি two.equals("cat")সত্য ফিরে আসবে?
Aequitas

একমাত্র সতর্কতা হ'ল এটি স্থিতিশীল ভেরিয়েবলগুলির জন্য কাজ করবে না।
ইগোরগানাপলস্কি

পূর্ণসংখ্যা ঘোষণার কী হবে?
ইগোরগানাপলস্কি

কেন এটি ক্যালেন্ডারের সাথে কাজ করে না? যদি আপনি এটি করেন যে প্রতিটি পরিবর্তনশীল যখন
সেগুলির মধ্যে কোনওটিকে

59

আপনি একাধিক ভেরিয়েবল ঘোষণা করতে পারেন, এবং একাধিক ভেরিয়েবল সূচনা করতে পারেন, তবে উভয়ই একই সময়ে নয়:

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

তবে, এই ধরণের জিনিসটি (বিশেষত একাধিক কার্যাদি) বেশিরভাগ জাভা বিকাশকারীদের দ্বারা প্রত্যাখ্যান করা হবে, যারা এটিকে "দৃশ্যত সরল" এর বিপরীত বলে মনে করবেন ।


24
যে ইশারা সে কি করতে চাচ্ছে জন্য +1 নয় আদর্শ।
ব্রায়ান রোচ

এটি স্ট্রিংয়ের জন্য, তবে কীভাবে পূর্ণসংখ্যার জন্য ?? int দিন, মাস, বছর, ঘন্টা, মিনিট = দিন = মাস = বছর = ঘন্টা = 0; এটা কি ঠিক ??
রঞ্জিত

23

না, জাভাতে এটা সম্ভব নয়।

আপনি এইভাবে করতে পারেন .. তবে এটি এড়াতে চেষ্টা করুন

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

8
কেন আপনি এড়াতে হবে তা ব্যাখ্যা করতে পারেন?
নিউরন

@ লোনলি নিউরন আমার মনে হয় আপনি যদি এভাবে ব্যবহার করেন তবে ভুল করা সহজ।
যুহং লিন

3
@ যুহংলিন আমি কেবলমাত্র একটি উত্তরের উত্তরের জন্য প্রত্যাশা করছিলাম
নিউরন

@ লোনলি নিউরন এটির জন্য ধীর। এটি প্রায় দ্বিগুণ সময় নেয় যেমন আপনি কেবল আলাদাভাবে আরম্ভ করবেন। অন্য একটি এই "বৈশিষ্ট্য" অপ্রয়োজনীয়। আমি এমন একটি দৃশ্যের কথা ভাবতে পারি না যা ভিন্ন পদ্ধতির সাহায্যে সমাধানযোগ্য হবে না। এটি কেবল একটি পরিষ্কার কোড নয় বলেছে।
আলেকজান্ডার হিম 14

@ আলেকান্দারহিম ব্যাখ্যাটির জন্য ধন্যবাদ। তবে আমি যে কারণটি জিজ্ঞাসা করেছি তা উত্তরের অংশ হওয়া উচিত।
নিউরন

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

আমি মনে করি না যে এটি সম্ভব হয় আপনাকে সমস্ত মান পৃথকীকরণের জন্য সেট করতে হবে (আপনি যে প্রথম উদাহরণ সরবরাহ করেছিলেন like

আপনি যে দ্বিতীয় উদাহরণটি দিয়েছেন, কেবলমাত্র "" শেষের পরিবর্তনশীলটিকে আরম্ভ করবে না, অন্যকে নয়।


0

এর থেকে অনেক দেরি করেও কিন্তু আমি খুঁজে পেলাম সহজতম উপায়:

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

আউটপুট:

hello
hello
hello
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.