CodeGym /Java Course /মডিউল 1 /বিস্তারিতভাবে মোড়ানো ক্লাস

বিস্তারিতভাবে মোড়ানো ক্লাস

মডিউল 1
লেভেল 16 , পাঠ 1
বিদ্যমান

1. Integerক্লাস

Integerএটি একটি শ্রেণীতেও ভাল, যার অর্থ এটির ক্ষেত্র এবং পদ্ধতি থাকতে পারে। এবং, অবশ্যই, এটা তাদের আছে. তাদের অনেক - তাদের কয়েক ডজন. এখানে আমরা সবচেয়ে মৌলিক বেশী বিবেচনা করব।

ক্লাসটিতে Integerদুটি ক্ষেত্র রয়েছে যাতে টাইপের সর্বাধিক এবং সর্বনিম্ন সম্ভাব্য মান রয়েছে int:

মাঠ বর্ণনা
Integer.MAX_VALUE
intপ্রকারের সর্বাধিক সম্ভাব্য মান
Integer.MIN_VALUE
intপ্রকারের ন্যূনতম সম্ভাব্য মান

intকখনও কখনও আপনি একটি ভেরিয়েবলের সবচেয়ে ছোট বা বৃহত্তম সম্ভাব্য মান নির্ধারণ করতে চান । বোধগম্য ধ্রুবকগুলির সাথে আপনার কোডটি বিশৃঙ্খল হওয়া এড়াতে, আপনি এটি খুব স্পষ্টভাবে নিম্নরূপ লিখতে পারেন:

কোড বর্ণনা
int min = Integer.MIN_VALUE;
min == 0x80000000

ক্লাসের Integerকিছু আকর্ষণীয় পদ্ধতিও রয়েছে। এখানে তারা:

পদ্ধতি বর্ণনা
String Integer.toHexString(int)
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির হেক্সাডেসিমেল উপস্থাপনা
String Integer.toBinaryString(int)
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির বাইনারি উপস্থাপনা
String Integer.toOctalString(int)
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির অক্টাল উপস্থাপনা
Integer Integer.valueOf(int i)
intএকটি Integerবস্তুর মধ্যে পাস মোড়ানো
Integer Integer.parseInt(String)
পাস করা স্ট্রিং থেকে প্রাপ্ত নম্বর প্রদান করে

আপনি আগে স্ট্যাটিক Integer.parseInt()পদ্ধতির সম্মুখীন হয়েছেন। আসুন এটি কীভাবে কাজ করে তা স্মরণ করি:

int name = Integer.parseInt(string);

যদি একটি স্ট্রিং সম্বলিত একটি সংখ্যা (শুধুমাত্র সংখ্যা) পদ্ধতিতে পাস করা হয় parseInt(), তাহলে এটি স্ট্রিংটিকে পার্স করবে এবং এতে থাকা সংখ্যাটি ফেরত দেবে।

বাকি পদ্ধতিগুলোও উপকারী। উদাহরণ স্বরূপ, তাদের মধ্যে কেউ কেউ পাস করা সংখ্যাকে বাইনারি, অক্টাল বা হেক্সাডেসিমেল প্রতিনিধিত্ব সহ একটি স্ট্রিংয়ে রূপান্তর করতে পারে।



2. Doubleক্লাস

সাধারণভাবে, Doubleক্লাসটি ক্লাসের অনুরূপ Integer, শুধুমাত্র এটি doubleএকটি এর পরিবর্তে একটিকে মোড়ানো হয় int। এটির ক্ষেত্র এবং পদ্ধতি রয়েছে যা আমাদের জন্য আগ্রহী হবে। তাদের কয়েকটি বিবেচনা করুন:

ক্লাসের Doubleছয়টি আকর্ষণীয় ক্ষেত্র রয়েছে:

মাঠ বর্ণনা
double Double.NEGATIVE_INFINITY
নেতিবাচক অসীমতা
double Double.POSITIVE_INFINITY
ইতিবাচক অসীমতা
int Double.MIN_EXPONENT
ন্যূনতম সম্ভাব্য সূচক (2 x )
int Double.MAX_EXPONENT
সর্বাধিক সম্ভাব্য সূচক (2 x )
double Double.MIN_VALUE
doubleপ্রকারের ন্যূনতম সম্ভাব্য মান
double Double.MAX_VALUE
doubleপ্রকারের সর্বাধিক সম্ভাব্য মান

অনন্ত

আপনি যদি -1.0দ্বারা ভাগ করেন 0.0, আপনি নেতিবাচক অসীমতা পাবেন। আপনি যদি 1.0দ্বারা ভাগ করেন 0.0, আপনি ধনাত্মক অসীমতা পাবেন। আপনি শুধুমাত্র একটি doubleশূন্য দ্বারা ভাগ করতে পারবেন না, তবে আপনি এটি ব্যবহার করতে পারেন এই অপারেশনগুলির ফলাফল সংরক্ষণ করতে।

a এর সূচকdouble

সূচক বোঝা সহজ। অভ্যন্তরীণভাবে, একটি ডাবল একটি ম্যান্টিসা এবং একটি সূচক নিয়ে গঠিত। কিন্তু এখানে সূচকের মান কিন্তু নয় । এইভাবে, যদি সূচকটি দ্বারা বৃদ্ধি পায় , তাহলে সংখ্যাটির মোট মান দ্বিগুণ হবে।10x2x1

MIN_EXPONENT == -1024, যার মানে , যা প্রায় সমান2-102410-308

এবং অবশ্যই, Doubleক্লাসের আকর্ষণীয় পদ্ধতি রয়েছে:

পদ্ধতি বর্ণনা
String Double.toHexString(double)
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির হেক্সাডেসিমেল উপস্থাপনা
boolean Double.isInfinite(double)
পাস করা নম্বরটি অসীম কিনা তা পরীক্ষা করে।
boolean Double.isNaN(double)
পাস করা নম্বর কিনা তা পরীক্ষা করেNaN
Double Double.valueOf(double)
doubleএকটি Doubleবস্তুর মধ্যে পাস মোড়ানো
Double Double.parseDouble(String)
পাস করা স্ট্রিং থেকে প্রাপ্ত নম্বর প্রদান করে

isInfinite()মজার বিষয় হল, এমন একটি পদ্ধতি রয়েছে যা trueপাস করা সংখ্যাটি ইতিবাচক বা ঋণাত্মক অসীম হলে ফেরত দেয়।

পদ্ধতিটি isNaN()একই রকম — এটি পরীক্ষা করে যে পাস করা নম্বরটি কিনা NaN( Not-a-Number , একটি বিশেষ ধ্রুবক যা একটি অনির্ধারিত মান নির্দেশ করে)।



3. Characterক্লাস

ক্লাসটি Characterমূলত এর বিপুল সংখ্যক স্ট্যাটিক ইউটিলিটি পদ্ধতির জন্য আকর্ষণীয় যা আপনাকে অক্ষরগুলি বিভিন্ন বিভাগের অন্তর্গত কিনা তা পরীক্ষা করতে দেয়।

উদাহরণ

পদ্ধতি বর্ণনা
Character.isAlphabetic(int)
একটি অক্ষর একটি বর্ণানুক্রমিক অক্ষর কিনা তা পরীক্ষা করে
Character.isLetter(char)
অক্ষরটি একটি অক্ষর কিনা তা পরীক্ষা করে
Character.isDigit(char)
অক্ষরটি একটি সংখ্যা কিনা তা পরীক্ষা করে
Character.isSpaceChar(char)
অক্ষরটি একটি স্থান, একটি লাইন বিরতি, বা একটি পৃষ্ঠা বিরতি কিনা তা পরীক্ষা করে (কোড: 12, 13, 14)
Character.isWhitespace(char)
অক্ষরটি হোয়াইটস্পেস কিনা তা পরীক্ষা করে: একটি স্পেস, ট্যাব, ইত্যাদি।
Character.isLowerCase(char)
অক্ষরটি ছোট হাতের কিনা তা পরীক্ষা করে
Character.isUpperCase(char)
অক্ষরটি বড় হাতের কিনা তা পরীক্ষা করে
Character.toLowerCase(char)
অক্ষরটিকে ছোট হাতের অক্ষরে রূপান্তর করে
Character.toUpperCase(char)
অক্ষরটিকে বড় হাতের অক্ষরে রূপান্তর করে

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



4. Booleanক্লাস

টাইপ Booleanকার্যত টাইপ হিসাবে একই boolean। পার্থক্য ন্যূনতম.

নীচে আমরা ক্লাসের একটি সরলীকৃত সংস্করণ দেখাই Boolean:

কোড বর্ণনা
class Boolean
{
   public static final Boolean TRUE = new Boolean(true);
   public static final Boolean FALSE = new Boolean(false);

   private final boolean value;

   public Boolean(boolean value)
   {
      this.value = value;
   }

   public boolean booleanValue()
   {
      return value;
   }

   public static Boolean valueOf(boolean value)
   {
      return (value ? TRUE : FALSE);
   }
}


ধ্রুবক: TRUEи FALSE


ভেরিয়েবল ক্লাস

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




পদ্ধতিটি অভ্যন্তরীণ ভেরিয়েবলের মান প্রদান করে



এই স্ট্যাটিক পদ্ধতিটি এবং trueতে রূপান্তরিত করে ।TRUEfalseFALSE

টাইপের Booleanদুটি ধ্রুবক রয়েছে (দুটি ক্ষেত্র):

ক্লাসের ধ্রুবক বুলিয়ান টাইপের জন্য কাউন্টারপার্ট বর্ণনা
Boolean.TRUE
true
সত্য
Boolean.FALSE
false
মিথ্যা

আপনি তাদের সাথে একইভাবে কাজ করতে পারেন যেভাবে আপনি টাইপের সাথে কাজ করেন boolean:

কোড বিঃদ্রঃ
if (Boolean.TRUE)
{
}
ক্লাস Booleanহল একমাত্র ক্লাস যা একটি শর্তের ভিতরে লেখা যায়
Boolean a = Boolean.TRUE;
boolean b = Boolean.TRUE;
boolean с = true;
তিনটি ভেরিয়েবলই সমান true/TRUE
Boolean a = Boolean.TRUE;
Boolean b = Boolean.TRUE;
if (a == b)
উভয় ব্যবহার করে ধ্রুবক তুলনা করা যেতে পারে equalsএবং ==

এটিও কাজ করবে।

অটোবক্সিং এখানে দুর্দান্ত কাজ করে। এর মানে হল যে আপনি এই টাইপটিকে টাইপের মতো একইভাবে ব্যবহার করতে পারেন boolean— সতর্ক থাকার জন্য কোনও অসুবিধা নেই৷

এটা কিভাবে লেখা হয় কিভাবে এটা কাজ করে
Boolean a = true;
Boolean b = true;
Boolean c = false;
boolean d = a;
Boolean a = Boolean.valueOf(true);
Boolean b = Boolean.valueOf(true);
Boolean c = Boolean.valueOf(false);
boolean d = a.booleanValue();

এবং এখানে booleanএবং Booleanপ্রকারগুলির একটি তুলনা:

boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE

a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)

আপনার যদি সত্যিই একটি স্বাধীন Booleanবস্তুর প্রয়োজন হয় তবে আপনাকে এটি স্পষ্টভাবে তৈরি করতে হবে:

boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE

a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)

আরও একটি উদাহরণ, যেখানে আমরা Booleanএকটি এর ভিতরে ব্যবহার করব if:

কোড বিঃদ্রঃ
Boolean less = (2 < 3);
if (less)
{
   ...
}
এটি কম্পাইল এবং কাজ করবে

এটি কম্পাইল হবে, কিন্তু এটি কাজ করবে না!

কোড বিঃদ্রঃ
Boolean less = null;
if (less)
{
   ...
}

ত্রুটি _ এই লাইন একটি ব্যতিক্রম নিক্ষেপ করবে


5. অটোবক্সিংয়ের সময় ক্যাশিং মান

পূর্ণসংখ্যার মোড়কের প্রকারের সাথে সম্পর্কিত কিছু সমস্যা রয়েছে।

আপনি ইতিমধ্যে জানেন, যদি আমরা একটি intএবং একটি তুলনা করি Integer, তাহলে এটি Integerএকটিতে রূপান্তরিত হয় int:

এটা কিভাবে লেখা হয় কিভাবে এটা কাজ করে
int a = 5;
Integer b = 5;
if (a == b)
{
   ...
}
int a = 5;
Integer b = Integer.valueOf(5);
if (a == b.intValue())
{
   ...
}

আপনি যদি দুটি Integerবস্তুকে একে অপরের সাথে তুলনা করেন তবে সেগুলি ints-এ রূপান্তরিত হয় না:

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

System.out.println(a == b); // Compared by reference
System.out.println(a == c);
System.out.println(b == c);




false
true
true

a == cএবং , কিন্তু , কারণ যখন আমরা তুলনা করি এবং আমরা রেফারেন্স তুলনা করি। যা মূলত আমরা আশা করব।b == ca != bab

আশ্চর্য

কিন্তু যদি আমরা 500এর সাথে প্রতিস্থাপন করি 100, তাহলে আমরা একটি সম্পূর্ণ ভিন্ন ফলাফল পাই:

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

System.out.println(a == b); // Compared by reference
System.out.println(a == c);
System.out.println(b == c);




true
true
true

এখানে সমস্যা হল যে একটি নতুন Integerবস্তু সবসময় অটোবক্সিং এর সময় তৈরি হয় না । অবজেক্ট ইনক্লুসিভের -128মাধ্যমে মানগুলির জন্য ক্যাশে করা হয় ।127

ক্লাসে Integerএকটি লুকানো অ্যারে রয়েছে যা বস্তু সংরক্ষণ করে: Integer(-128), Integer(-127), ... Integer(126),Integer(127)

আপনি যদি লেখেন Integer x = 128, তাহলে অটোবক্সিং প্রক্রিয়া একটি নতুন অবজেক্ট তৈরি করে, কিন্তু যদি আপনি লেখেন Integer x = 127, তাহলে অটোবক্সিং প্রক্রিয়া বিদ্যমান বস্তুটিকে ক্যাশে (অ্যারে থেকে) থেকে পুনরুদ্ধার করে।

Integerআপনি যদি ক্যাশে থেকে অবজেক্টটি আসতে না চান তবে আপনাকে এটি লিখে স্পষ্টভাবে তৈরি করতে হবে:Integer x = new Integer(127);

সমস্ত মোড়কের ধরনে এই জাতীয় ক্যাশে থাকে: Integer, Long, Byte, Short, Boolean. প্রকারের জন্য Boolean, এর TRUEএবং FALSEমান উভয়ই ধ্রুবক, তাই সেগুলিও মূলত ক্যাশে করা হয়।


মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION