1. ধ্রুবক
অন্যান্য অনেক প্রোগ্রামিং ভাষার ধ্রুবক থাকে , অর্থাৎ, ভেরিয়েবল যার মান পরিবর্তন করা যায় না । সাধারণত, এগুলি কিছু মৌলিক জিনিসের জন্য ব্যবহৃত হয় যেমন সংখ্যা Pi
বা বছরের মাসগুলিতে দিনের সংখ্যা। এটি বলেছে, নীতিগতভাবে, একজন প্রোগ্রামার যেকোন ভেরিয়েবলকে একটি ধ্রুবক বানাতে পারে, যদি সে সিদ্ধান্ত নেয় যে এটি করা প্রয়োজন।
তাহলে আপনি কিভাবে জাভাতে একটি অপরিবর্তনীয় পরিবর্তনশীল (ধ্রুবক) ঘোষণা করবেন? এর জন্য একটি বিশেষ কীওয়ার্ড আছে: final
. একটি অপরিবর্তনীয় পরিবর্তনশীল তৈরি করা একটি সাধারণ একটি তৈরির মতোই দেখায়। শুধুমাত্র পার্থক্য হল ভেরিয়েবলের টাইপের আগে আপনাকে final
এই শব্দটি লিখতে হবে:
final Type name = value;
আপনি যদি একটি ভেরিয়েবলের জন্য একটি ভিন্ন মান নির্ধারণ করার চেষ্টা করেন final
, তাহলে আপনার প্রোগ্রামটি কেবল কম্পাইল করবে না।
যখন এটি ঘোষণা করা হয় তখন একটি final
ভেরিয়েবলকে আরম্ভ করতে হবে (একটি মান অবশ্যই বরাদ্দ করতে হবে)। এই নিয়মের একটি ব্যতিক্রম আছে: আপনি একটি স্ট্যাটিক ক্লাস ভেরিয়েবলের আরম্ভকে কনস্ট্রাক্টরে স্থানান্তর করতে পারেন। কিন্তু আপনি লেভেল 10 এ এটি সম্পর্কে শিখবেন ।
কীওয়ার্ডের সংখ্যা কমাতে, জাভা ডেভেলপাররা final
শুধুমাত্র ধ্রুবক ঘোষণা করার চেয়েও বেশি কিছুর জন্য শব্দটি ব্যবহার করে। final
পদ্ধতি এবং এমনকি ক্লাসেও প্রয়োগ করতে পারে। হিসাবে ঘোষিত পদ্ধতিগুলিকে final
ওভাররাইড করা যাবে না এবং একটি শ্রেণীকে final
উত্তরাধিকারসূত্রে পাওয়া যাবে না।
যেকোন ভেরিয়েবলের আগে সংশোধক final
যোগ করা যেতে পারে: স্থানীয় ভেরিয়েবল, মেথড প্যারামিটার, ক্লাস ফিল্ড এবং স্ট্যাটিক ক্লাস ভেরিয়েবল।
মনে রাখবেন যে final
একটি ভেরিয়েবল নামের আগে শুধুমাত্র সেই ভেরিয়েবলের কোনো পরিবর্তনের বিরুদ্ধে সুরক্ষা । যদি একটি ভেরিয়েবল একটি বস্তুর একটি রেফারেন্স সংরক্ষণ করে, তাহলে বস্তুটি এখনও পরিবর্তন করা যেতে পারে।
উদাহরণ:
|
আমরা একটি অ্যারে তৈরি করি। এটি অনুমোদিত নয়: পরিবর্তনশীল data হিসাবে ঘোষণা করা হয় final । কিন্তু আপনি এটা করতে পারেন. এবং এই. |
গ্লোবাল ধ্রুবক
আপনি যদি আপনার প্রোগ্রামে বিশ্বব্যাপী ধ্রুবক ঘোষণা করার সিদ্ধান্ত নেন, তাহলে আপনাকে স্ট্যাটিক ক্লাস ভেরিয়েবল তৈরি করতে হবে এবং সেগুলি তৈরি করতে হবে public
এবং final
. এই ধরনের ভেরিয়েবলগুলির নামের জন্য একটি বিশেষ শৈলী রয়েছে: এগুলি সমস্ত বড় অক্ষরে লেখা হয়, একটি আন্ডারস্কোর অক্ষর সহ শব্দগুলিকে আলাদা করতে ব্যবহৃত হয়।
উদাহরণ:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
2. পরিবর্তনশীল ছায়া
আমরা আগেই বলেছি, আপনি একই পদ্ধতিতে একই নামের একাধিক স্থানীয় ভেরিয়েবল তৈরি করতে পারবেন না। বিভিন্ন পদ্ধতিতে, আপনি করতে পারেন।
কিন্তু এখানে যা আপনি সম্ভবত জানেন না: উদাহরণ ভেরিয়েবল এবং স্থানীয় পদ্ধতি ভেরিয়েবলের একই নাম থাকতে পারে।
উদাহরণ:
কোড | পরিবর্তনশীল দৃশ্যমানতা |
---|---|
|
|
পদ্ধতিতে add
, আমরা নামক একটি স্থানীয় পরিবর্তনশীল ঘোষণা করেছি sum
। পদ্ধতির শেষ না হওয়া পর্যন্ত, এটি ইনস্ট্যান্স ভেরিয়েবলের ছায়া (বা মুখোশ ) রাখে।sum
ঠিক আছে, আপনি বলছেন, এটি কিছু অর্থে প্রত্যাশিত। কিন্তু তাতেই গল্পের শেষ নেই। এটা দেখা যাচ্ছে যে যদি একটি ইনস্ট্যান্স ভেরিয়েবল একটি স্থানীয় ভেরিয়েবল দ্বারা ছায়া করা হয়, তবে পদ্ধতির মধ্যে ইনস্ট্যান্স ভেরিয়েবলটি উল্লেখ করার একটি উপায় এখনও আছে। this
আমরা এর নামের আগে কীওয়ার্ড লিখে এটি করি :
this.name
এখানে একটি উদাহরণ যেখানে নাম দ্বন্দ্ব সফলভাবে সমাধান করা হয়েছে:
কোড | পরিবর্তনশীল দৃশ্যমানতা |
---|---|
|
|
এবং ভেরিয়েবল কিওয়ার্ড সহ বা ছাড়া সব জায়গায় পাওয়া যায় count
। যে লাইনে স্থানীয় ভেরিয়েবলটি ইনস্ট্যান্স ভেরিয়েবলকে ছায়া দেয় , ইনস্ট্যান্স ভেরিয়েবলটি শুধুমাত্র কীওয়ার্ড ব্যবহার করে অ্যাক্সেস করা যেতে পারে ।sum
this
sum
sum
sum
this
যদি একটি ইনস্ট্যান্স ভেরিয়েবলের পরিবর্তে একটি স্ট্যাটিক ক্লাস ভেরিয়েবল ছায়াযুক্ত হয়, তাহলে আপনাকে কীওয়ার্ডের পরিবর্তে ক্লাসের নামের মাধ্যমে এটি অ্যাক্সেস করতে হবে this
:
ClassName.name
উদাহরণ:
কোড | পরিবর্তনশীল দৃশ্যমানতা |
---|---|
|
|
আপনি প্রিফিক্স হিসাবে ক্লাসের নাম ব্যবহার করে বা ছাড়াই সর্বত্র count
এবং স্ট্যাটিক ভেরিয়েবল অ্যাক্সেস করতে পারেন। যে লাইনগুলিতে স্থানীয় ভেরিয়েবলটি ইনস্ট্যান্স ভেরিয়েবলকে ছায়া দেয় , সেখানে ইনস্ট্যান্স ভেরিয়েবলের অ্যাক্সেস শুধুমাত্র উপসর্গ হিসাবে ব্যবহার করার সময়ই সম্ভব ।sum
Solution
sum
sum
sum
Solution
3. একটি for
লুপের ভিতরে ভেরিয়েবল
এবং আরও একটি ছোট কিন্তু আকর্ষণীয় তথ্য।
এমন একটি জায়গাও রয়েছে যেখানে একটি পরিবর্তনশীলকে একটি বিশেষ উপায়ে ঘোষণা করা হয় — একটি for
লুপের ভিতরে ।
আপনি মনে করতে পারেন যে একটি for
লুপে সাধারণত বন্ধনীতে একটি কাউন্টার ভেরিয়েবল থাকে। এবং এই ভেরিয়েবলের দৃশ্যমানতা কি হবে? সর্বোপরি, এটি লুপের শরীরে নেই। এটা কি পুরো পদ্ধতি? অথবা না?
for
সঠিক উত্তর হল: লুপের হেডারে ঘোষিত একটি ভেরিয়েবল শুধুমাত্র লুপের বডিতে এবং লুপের হেডারেfor
দৃশ্যমান ।
উদাহরণ:
কোড | পরিবর্তনশীল দৃশ্যমানতা |
---|---|
|
|
সুতরাং, আপনি সর্বদা আপনার কোডে একের পর এক লুপ লিখতে পারেন এবং একই নামের সাথে কাউন্টার ভেরিয়েবল ব্যবহার করতে পারেন — যা কোনো সমস্যা তৈরি করবে না।
উদাহরণ:
কোড | পরিবর্তনশীল দৃশ্যমানতা |
---|---|
|
|
GO TO FULL VERSION