1. Integer
ক্লাস
Integer
এটি একটি শ্রেণীতেও ভাল, যার অর্থ এটির ক্ষেত্র এবং পদ্ধতি থাকতে পারে। এবং, অবশ্যই, এটা তাদের আছে. তাদের অনেক - তাদের কয়েক ডজন. এখানে আমরা সবচেয়ে মৌলিক বেশী বিবেচনা করব।
ক্লাসটিতে Integer
দুটি ক্ষেত্র রয়েছে যাতে টাইপের সর্বাধিক এবং সর্বনিম্ন সম্ভাব্য মান রয়েছে int
:
মাঠ | বর্ণনা |
---|---|
|
int প্রকারের সর্বাধিক সম্ভাব্য মান |
|
int প্রকারের ন্যূনতম সম্ভাব্য মান |
int
কখনও কখনও আপনি একটি ভেরিয়েবলের সবচেয়ে ছোট বা বৃহত্তম সম্ভাব্য মান নির্ধারণ করতে চান । বোধগম্য ধ্রুবকগুলির সাথে আপনার কোডটি বিশৃঙ্খল হওয়া এড়াতে, আপনি এটি খুব স্পষ্টভাবে নিম্নরূপ লিখতে পারেন:
কোড | বর্ণনা |
---|---|
|
|
ক্লাসের Integer
কিছু আকর্ষণীয় পদ্ধতিও রয়েছে। এখানে তারা:
পদ্ধতি | বর্ণনা |
---|---|
|
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির হেক্সাডেসিমেল উপস্থাপনা |
|
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির বাইনারি উপস্থাপনা |
|
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির অক্টাল উপস্থাপনা |
|
int একটি Integer বস্তুর মধ্যে পাস মোড়ানো |
|
পাস করা স্ট্রিং থেকে প্রাপ্ত নম্বর প্রদান করে |
আপনি আগে স্ট্যাটিক Integer.parseInt()
পদ্ধতির সম্মুখীন হয়েছেন। আসুন এটি কীভাবে কাজ করে তা স্মরণ করি:
int name = Integer.parseInt(string);
যদি একটি স্ট্রিং সম্বলিত একটি সংখ্যা (শুধুমাত্র সংখ্যা) পদ্ধতিতে পাস করা হয় parseInt()
, তাহলে এটি স্ট্রিংটিকে পার্স করবে এবং এতে থাকা সংখ্যাটি ফেরত দেবে।
বাকি পদ্ধতিগুলোও উপকারী। উদাহরণ স্বরূপ, তাদের মধ্যে কেউ কেউ পাস করা সংখ্যাকে বাইনারি, অক্টাল বা হেক্সাডেসিমেল প্রতিনিধিত্ব সহ একটি স্ট্রিংয়ে রূপান্তর করতে পারে।
2. Double
ক্লাস
সাধারণভাবে, Double
ক্লাসটি ক্লাসের অনুরূপ Integer
, শুধুমাত্র এটি double
একটি এর পরিবর্তে একটিকে মোড়ানো হয় int
। এটির ক্ষেত্র এবং পদ্ধতি রয়েছে যা আমাদের জন্য আগ্রহী হবে। তাদের কয়েকটি বিবেচনা করুন:
ক্লাসের Double
ছয়টি আকর্ষণীয় ক্ষেত্র রয়েছে:
মাঠ | বর্ণনা |
---|---|
|
নেতিবাচক অসীমতা |
|
ইতিবাচক অসীমতা |
|
ন্যূনতম সম্ভাব্য সূচক (2 x ) |
|
সর্বাধিক সম্ভাব্য সূচক (2 x ) |
|
double প্রকারের ন্যূনতম সম্ভাব্য মান |
|
double প্রকারের সর্বাধিক সম্ভাব্য মান |
অনন্ত
আপনি যদি -1.0
দ্বারা ভাগ করেন 0.0
, আপনি নেতিবাচক অসীমতা পাবেন। আপনি যদি 1.0
দ্বারা ভাগ করেন 0.0
, আপনি ধনাত্মক অসীমতা পাবেন। আপনি শুধুমাত্র একটি double
শূন্য দ্বারা ভাগ করতে পারবেন না, তবে আপনি এটি ব্যবহার করতে পারেন এই অপারেশনগুলির ফলাফল সংরক্ষণ করতে।
a এর সূচকdouble
সূচক বোঝা সহজ। অভ্যন্তরীণভাবে, একটি ডাবল একটি ম্যান্টিসা এবং একটি সূচক নিয়ে গঠিত। কিন্তু এখানে সূচকের মান কিন্তু নয় । এইভাবে, যদি সূচকটি দ্বারা বৃদ্ধি পায় , তাহলে সংখ্যাটির মোট মান দ্বিগুণ হবে।10x
2x
1
MIN_EXPONENT == -1024
, যার মানে , যা প্রায় সমান2-1024
10-308
এবং অবশ্যই, Double
ক্লাসের আকর্ষণীয় পদ্ধতি রয়েছে:
পদ্ধতি | বর্ণনা |
---|---|
|
একটি স্ট্রিং প্রদান করে যা সংখ্যাটির হেক্সাডেসিমেল উপস্থাপনা |
|
পাস করা নম্বরটি অসীম কিনা তা পরীক্ষা করে। |
|
পাস করা নম্বর কিনা তা পরীক্ষা করেNaN |
|
double একটি Double বস্তুর মধ্যে পাস মোড়ানো |
|
পাস করা স্ট্রিং থেকে প্রাপ্ত নম্বর প্রদান করে |
isInfinite()
মজার বিষয় হল, এমন একটি পদ্ধতি রয়েছে যা true
পাস করা সংখ্যাটি ইতিবাচক বা ঋণাত্মক অসীম হলে ফেরত দেয়।
পদ্ধতিটি isNaN()
একই রকম — এটি পরীক্ষা করে যে পাস করা নম্বরটি কিনা NaN
( Not-a-Number , একটি বিশেষ ধ্রুবক যা একটি অনির্ধারিত মান নির্দেশ করে)।
3. Character
ক্লাস
ক্লাসটি Character
মূলত এর বিপুল সংখ্যক স্ট্যাটিক ইউটিলিটি পদ্ধতির জন্য আকর্ষণীয় যা আপনাকে অক্ষরগুলি বিভিন্ন বিভাগের অন্তর্গত কিনা তা পরীক্ষা করতে দেয়।
উদাহরণ
পদ্ধতি | বর্ণনা |
---|---|
|
একটি অক্ষর একটি বর্ণানুক্রমিক অক্ষর কিনা তা পরীক্ষা করে |
|
অক্ষরটি একটি অক্ষর কিনা তা পরীক্ষা করে |
|
অক্ষরটি একটি সংখ্যা কিনা তা পরীক্ষা করে |
|
অক্ষরটি একটি স্থান, একটি লাইন বিরতি, বা একটি পৃষ্ঠা বিরতি কিনা তা পরীক্ষা করে (কোড: 12, 13, 14) |
|
অক্ষরটি হোয়াইটস্পেস কিনা তা পরীক্ষা করে: একটি স্পেস, ট্যাব, ইত্যাদি। |
|
অক্ষরটি ছোট হাতের কিনা তা পরীক্ষা করে |
|
অক্ষরটি বড় হাতের কিনা তা পরীক্ষা করে |
|
অক্ষরটিকে ছোট হাতের অক্ষরে রূপান্তর করে |
|
অক্ষরটিকে বড় হাতের অক্ষরে রূপান্তর করে |
এই পদ্ধতিগুলির একটি বৈশিষ্ট্য হল যে তারা সমস্ত পরিচিত বর্ণমালার সাথে কাজ করে: আরবি সংখ্যাগুলিকে সংখ্যা হিসাবে শ্রেণীবদ্ধ করা হয়, ইত্যাদি।
4. Boolean
ক্লাস
টাইপ Boolean
কার্যত টাইপ হিসাবে একই boolean
। পার্থক্য ন্যূনতম.
নীচে আমরা ক্লাসের একটি সরলীকৃত সংস্করণ দেখাই Boolean
:
কোড | বর্ণনা |
---|---|
|
ধ্রুবক: TRUE и FALSE ভেরিয়েবল ক্লাস Boolean কনস্ট্রাক্টর পদ্ধতিটি অভ্যন্তরীণ ভেরিয়েবলের মান প্রদান করে এই স্ট্যাটিক পদ্ধতিটি এবং true তে রূপান্তরিত করে ।TRUE false FALSE |
টাইপের Boolean
দুটি ধ্রুবক রয়েছে (দুটি ক্ষেত্র):
ক্লাসের ধ্রুবক | বুলিয়ান টাইপের জন্য কাউন্টারপার্ট | বর্ণনা |
---|---|---|
|
|
সত্য |
|
|
মিথ্যা |
আপনি তাদের সাথে একইভাবে কাজ করতে পারেন যেভাবে আপনি টাইপের সাথে কাজ করেন boolean
:
কোড | বিঃদ্রঃ |
---|---|
|
ক্লাস Boolean হল একমাত্র ক্লাস যা একটি শর্তের ভিতরে লেখা যায় |
|
তিনটি ভেরিয়েবলই সমান true /TRUE |
|
উভয় ব্যবহার করে ধ্রুবক তুলনা করা যেতে পারে equals এবং == এটিও কাজ করবে। |
অটোবক্সিং এখানে দুর্দান্ত কাজ করে। এর মানে হল যে আপনি এই টাইপটিকে টাইপের মতো একইভাবে ব্যবহার করতে পারেন boolean
— সতর্ক থাকার জন্য কোনও অসুবিধা নেই৷
এটা কিভাবে লেখা হয় | কিভাবে এটা কাজ করে |
---|---|
|
|
এবং এখানে 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
:
কোড | বিঃদ্রঃ |
---|---|
|
এটি কম্পাইল এবং কাজ করবে |
এটি কম্পাইল হবে, কিন্তু এটি কাজ করবে না!
কোড | বিঃদ্রঃ |
---|---|
|
ত্রুটি _ এই লাইন একটি ব্যতিক্রম নিক্ষেপ করবে |
5. অটোবক্সিংয়ের সময় ক্যাশিং মান
পূর্ণসংখ্যার মোড়কের প্রকারের সাথে সম্পর্কিত কিছু সমস্যা রয়েছে।
আপনি ইতিমধ্যে জানেন, যদি আমরা একটি int
এবং একটি তুলনা করি Integer
, তাহলে এটি Integer
একটিতে রূপান্তরিত হয় int
:
এটা কিভাবে লেখা হয় | কিভাবে এটা কাজ করে |
---|---|
|
|
আপনি যদি দুটি Integer
বস্তুকে একে অপরের সাথে তুলনা করেন তবে সেগুলি int
s-এ রূপান্তরিত হয় না:
কোড | কনসোল আউটপুট |
---|---|
|
|
a == c
এবং , কিন্তু , কারণ যখন আমরা তুলনা করি এবং আমরা রেফারেন্স তুলনা করি। যা মূলত আমরা আশা করব।b == c
a != b
a
b
আশ্চর্য
কিন্তু যদি আমরা 500
এর সাথে প্রতিস্থাপন করি 100
, তাহলে আমরা একটি সম্পূর্ণ ভিন্ন ফলাফল পাই:
কোড | কনসোল আউটপুট |
---|---|
|
|
এখানে সমস্যা হল যে একটি নতুন 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
মান উভয়ই ধ্রুবক, তাই সেগুলিও মূলত ক্যাশে করা হয়।
GO TO FULL VERSION