1. মোড়কের প্রকারের তালিকা

আপনি জানেন যে জাভাতে 8 টি আদিম প্রকার রয়েছে, যা এমন ধরনের যা ক্লাস নয়। একদিকে, এটি ভাল - এগুলি সহজ এবং সামান্য জায়গা নেয়। অন্যদিকে, কখনও কখনও ক্লাসগুলি আমাদের প্রয়োজন। আপনি পরবর্তী পাঠে ঠিক কেন তা খুঁজে পাবেন।

তাহলে কি করা উচিত?

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

এখানে এই ধরনের একটি তালিকা আছে. তুমি কি কিছু জান?

আদিম প্রকার মোড়ক ক্লাস
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

আদিম প্রকারের নামগুলি একটি ছোট হাতের অক্ষর দিয়ে শুরু হয়, কিন্তু মোড়ক শ্রেণীর নামগুলি একটি বড় হাতের অক্ষর দিয়ে শুরু হয়। কিছু ক্লাসের নামও একটু লম্বা: Integerinstead of intи Characterinstead of char

র‍্যাপার ক্লাসের সকল বস্তু অপরিবর্তনীয় ( অপরিবর্তনীয় )।

ক্লাসের জন্য সরলীকৃত কোড Integerএইরকম কিছু দেখায়:

কোড বিঃদ্রঃ
public class Integer
{
   private int value;

   Integer(int x)
   {
      this.value = x;
   }

   public int intValue()
   {
      return this.value;
   }

   public static Integer valueOf(int x)
   {
      return new Integer(x);
   }
}


ভেরিয়েবল

কনস্ট্রাক্টর




পদ্ধতিটি একটি মান প্রদান করে




স্ট্যাটিক পদ্ধতি একটি ভেরিয়েবলের Integerজন্য একটি নতুন বস্তু তৈরি করেint

2. একটিকে intএকটিতে রূপান্তর করাInteger

মোড়কের ধরনগুলিকে তাদের আদিম ভাইবোনের সমকক্ষ হিসাবে বিবেচনা করা হয়: আপনি সহজেই একটি আদিম প্রকারের সাথে সামঞ্জস্যপূর্ণ একটি মোড়ক বস্তু তৈরি করতে পারেন।

আদিম প্রকারগুলি তাদের সংশ্লিষ্ট র্যাপার প্রকারের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তা বিশ্লেষণ করার জন্য একটি উদাহরণ হিসাবে int টাইপ ব্যবহার করা যাক। intএকটি থেকে একটি Integerএবং তদ্বিপরীত রূপান্তর করার জন্য কোডটি দেখতে এইরকম হবে:

intএকটিকে একটিতে রূপান্তর করতে Integer, আপনাকে এই কোডটি লিখতে হবে:

Integer name = new Integer(value);

যেখানে nameএকটি ভেরিয়েবলের নাম Integer, এবং valueমোড়ানো intমান।

উদাহরণ:

কোড বিঃদ্রঃ
Integer age = new Integer(18);
Integer hundred = new Integer(100);
Integer zero = new Integer(0);

Integerএবং an কে an এ রূপান্তর করতে int, আপনাকে এই কোডটি লিখতে হবে:

int name = variable.intValue();

যেখানে nameএকটি পরিবর্তনশীল নাম int, এবং variableএকটি বস্তুর একটি রেফারেন্স Integer.

উদাহরণ:

কোড বিঃদ্রঃ
Integer age = new Integer(18);
int x = age.intValue();

x == 18
Integer hundred = new Integer(100);
int y = hundred.intValue();

y == 100
Integer zero = new Integer(0);
int z = zero.intValue();


z == 0
int i = 110;
Integer zero = new Integer(i);
int z = zero.intValue();

z == 110

3. অটোবক্সিং এবং আনবক্সিং

কিন্তু টাইপ সহ সাধারণ অপারেশনগুলিও Integerলেখা সহজ নয়।

আমরা আগেই বলেছি, Integerধরনটি অপরিবর্তনীয় ( অপরিবর্তনীয় )। Integerএকটি নতুন মান সহ একটি বস্তু তৈরি করতে int, আপনাকে স্পষ্টভাবে একটি নতুন Integerবস্তু তৈরি করতে হবে। intএটি বলেছে, একটি Integerবস্তুর ভিতরে সঞ্চিত একটি মান পাওয়া সহজ - শুধু intValue()পদ্ধতিটি কল করুন।

উদাহরণ:

কোড বর্ণনা
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = new Integer(b + 5)
5একটি Integerবস্তুর মধ্যে মোড়ানো বস্তু
থেকে মান পান একটি নতুন বস্তু তৈরি করুন (10 এর সমান)Integer
Integer

এটি বরং কষ্টকর কোড, আপনি কি মনে করেন না?

জাভার নির্মাতারা তাই ভেবেছিলেন, তাই তারা কম্পাইলারকে শিখিয়েছিলেন কীভাবে এই অপারেশনগুলি স্বয়ংক্রিয়ভাবে করতে হয়। intএকটি থেকে একটি স্বয়ংক্রিয় রূপান্তরকে Integerবলা হয় অটোবক্সিং (স্বয়ংক্রিয়ভাবে একটি বাক্সে মান স্থাপন করা), এবং বিপরীত অপারেশন (একটিকে Integerএকটিতে রূপান্তর করা int)কে বলা হয় আনবক্সিং

তোমার গোপন সংকেত কম্পাইলার কি দেখে
Integer a = 10;
Integer a = Integer.valueOf(10);
int b = a;
int b = a.intValue();
Integer c = a + b;
Integer c = Integer.valueOf(a.intValue() + b);

অটোবক্সিং এবং আনবক্সিং-এর জন্য ধন্যবাদ, আপনি নিরাপদে একটি পরিবর্তনশীলকে বরাদ্দ করতে পারেন intএবং Integerএর বিপরীতে। intআপনি এবং Integerপ্রকারের মধ্যে পার্থক্য না করে যেকোন জটিলতার অভিব্যক্তি লিখতে পারেন ।

উদাহরণ:

কোড কম্পাইলার কি তৈরি করবে
Integer a = 5;
int b = a;
Integer c = a + b;
int d = a + b + c;
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = Integer.valueOf(a.intValue() + b);
int d = a.intValue() + b + c.intValue();
Integer a = 5;
int b = 5;

if (a == b)
{
   ...
}
Integer a = Integer.valueOf (5);
int b = 5;

if (a.intValue() == b)
{
   ...
}


4. মোড়ক ভেরিয়েবল তুলনা

অটোবক্সিং এবং আনবক্সিং হল সহজ এবং স্বচ্ছ প্রক্রিয়া। আমরা new Integer()প্রয়োজন হিসাবে বিবৃতি ব্যবহার করি, এবং আমরা intValue()প্রয়োজন হিসাবে পদ্ধতি কল করি।

সবকিছু আপনার জন্য সুন্দর এবং সহজ কাজ করে, প্রোগ্রামার. মনে রাখবেন যে আপনি যদি একটি Integerএবং একটি তুলনা করেন Integer, তাহলে তুলনাটি রেফারেন্সের উপর ভিত্তি করে, মান নয়।

কোড কনসোল আউটপুট
Integer a = 1000;
Integer b = 1000;

System.out.println(a == b);



false
Integer a = 1000;
Integer b = 1000;

System.out.println(a.equals(b));



true

এবং ভেরিয়েবল মান সংরক্ষণ করে না a। তারা বস্তুর রেফারেন্স সংরক্ষণ করে। এর মানে এটা মনে রাখা গুরুত্বপূর্ণ যে কিভাবে তাদের সঠিকভাবে তুলনা করা যায়:bint

ভুল ঠিক
Integer a = 1000;
Integer b = 1000;
if (a == b)
{
   ...
}
Integer a = 1000;
Integer b = 1000;
if (a.equals(b))
{
   ...
}