পাঠ ৩: ডাটা টাইপস এবং অপারেটর
ভেরিয়েবল
প্রিমিটিভ ডাটাটাইপ - ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার ইত্যাদি।
র্যাপার ক্লাস
লিটারেল
বিভিন্ন রকম অপারেটর
ভ্যারিয়বল
ভ্যারিয়বল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ-
একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করবে তা বলে দিতে হবে। উপরের উদাহরণটিতে আমরা একটি ভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে।
যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়বল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক।
জাভাতে আমরা চার ধরণের ভেরিয়েবল নিয়ে কাজ করে থাকি -
Instance Variables (Non-static fields)
Class Variables (Static Fields)
Local variables
Parameters variables
জাভাতে ভ্যারিয়বল এবং ফিল্ড দুই শব্দই ব্যবহার করা হয়, তবে এর কিছু টেকনিকাল পার্থক্য আছে। সেগুলো নিয়েই আলোচনা করা হবে –
আমরা আবার একটি উদাহরণ দেখি –
আমরা জানি যে একটি ক্লাস থেকে আমরা অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন -
এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা দুইটি অবজেক্ট।
এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করবো ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে।
এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না।
উপরের উদাহরণটিতে numGears নামে একটি ভ্যারিয়বল আছে, এটির আগে একটি static কিওয়ার্ডটি আছে। এ ধরণের ভ্যারিয়বল কে Class Variables বা Static Fields বলা হয়। static কিওয়ার্ডটি কম্পাইলারকে বলে যে numGears নামে একটি মাত্র ভ্যারিয়বল থাকবে মেমোরিতে, অবজেক্ট এর সংখ্যা যতই হোক।
লোকাল ভ্যারিয়বল হলো সেসব ভ্যারিয়বল যে গুলো কোন মেথডের মাঝে ডিক্লার করা হয়। একটি লোকাল ভ্যারিয়বল শুধু মাত্র সেই মেথডের ভেতর থেকেই একসেস করা যাবে।
আর Parameters variables হলো সেই ভ্যারিয়বল গুলো যেগুলো মেথড কল করার সময় পাস করা হয়। এ গুলোও শুধুমাত্র মেথডের ভেতর থেকেই একসেস করা যায়।
আমরা Instance Variables এবং Class Variables গুলোকে ফিল্ড বলি।
এখানে কিছু ভ্যারিয়বল ডিক্লারাশেনের উদাহরণ দেওয়া হলো -
শুরুতে আগে টাইপ লিখতে হবে, তারপর একটি নাম, তারপর সেমিকোলন দিয়ে শেষ করতে হবে। তবে আমরা চাইলে ভ্যারিয়বল কে ইনিশিয়ালাইজেশান করতে পারি। যেমন -
অর্থাৎ শুরুতে আমরা cadence এর ভ্যালু 0 এসাইন করালাম।
এরপর যদি আমরা কোন ভ্যারিয়বলে ভ্যালু এসাইন করতে চাই তাহলে -
জাভা ভ্যারিয়বল লেখার কিছু নিয়ম কানুন আছে-
ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা।
ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরু করতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়।
ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে।
ভ্যারিয়বল জাভার কোন reserved কিওয়ার্ড হতে পারবে না।
ডাটা টাইপ
জাভা তে আট ধরণের প্রিমিটিভ ডাটা টাইপ আছে ।
Data type
Description
byte
8 bit signed value, values from -128 to 127
short
16 bit signed value, values from -32.768 to 32.767
char
16 bit Unicode character
int
32 bit signed value, values from -2.147.483.648 to 2.147.483.647
long
64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808
float
32 bit floating point value
double
64 bit floating point value
boolean
true & false
এগুলো প্রমিটিভ ডাটা টাইপ, এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে।
র্যাপার ক্লাস
তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট।
Data type
Description
Byte
8 bit signed value, values from -128 to 127
Short
16 bit signed value, values from -32.768 to 32.767
Character
16 bit Unicode character
Integer
32 bit signed value, values from -2.147.483.648 to 2.147.483.647
Long
64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808
Float
32 bit floating point value
Double
64 bit floating point value
এগুলোকে প্রিমিটিভ টাইপ এর র্যাপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে।
তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি।
তবে প্রিমিটিভ ডাটা টাইপ গুলোর ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন -
Data Type
Default Value (for fields)
byte
0
short
0
int
0
long
0L
float
0.0f
double
0.0d
char
'\u0000'
boolean
false
লিটারেল-
প্রোগ্রামিং ল্যাংগুয়েজে কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়।
উদাহরণ-
উপরের দুটি উদাহরণের মাঝে একটিতে আমরা new কিওয়ার্ড ব্যবহার করে নতুন অবজেক্ট তৈরি করেছি। কিন্তু পরের উদাহরণটিতে সেটি করতে হয় নি। আমরা সরাসরি একটি ভ্যালু এসাইন করেছি। এখানে 5 একটি ভ্যালু। এখানে 5 হচ্ছে লিটারেল।
এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভেরিয়েবল initialize করতে পারি।
জাভাতে প্রিমিটিভ টাইপ সকল ডাটাটাইপ লিটারেল সাপোর্ট করে। যেমন -
নিচে আরো কিছু উদাহরণ দেওয়া হলো –
ইন্টিজার লিটারেল-
ফ্লােটিং পয়েন্ট লিটারেল-
ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-
char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি ('') চিহ্ন String এর জন্যে ডবল উদ্ধৃতি ("") চিহ্ন ব্যবহার করতে হয়- যেমন-
char এবং String ইউনিকোড ক্যারেক্টার হতে পারে।
আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয়, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি।
কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজে বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক-
এসাইনমেন্ট অপারেটর (Assignment Operator)
“=” এটি হচ্ছে এসাইনমেন্ট অপারেটর বাংলায় যাকে বলে সমান সমান চিহ্ন। আমরা একটি Bicycle ক্লাস দেখেছি, এর মাঝে কিছু ভেরিয়েবল দেখেছি-
এই ভ্যারিয়বল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভ্যারিয়বল এর মাঝে ভ্যালু এসাইন করতে পারি।
এরিথমেটিক অপারেটর(Arithmetic Operator)
জাভা প্রোগ্রামিং ল্যাংগুয়েজ-এ যোগ, বিয়োগ, গুন, ভাগ করার জন্যে কিছু অপারেটর আছে। এগুলো আমরা যখন বেসিক গণিত শিখি তখন থেকেই জানি। শুধু একটি অপারেটর নতুন মনে হতে পারে, যা হলো “%”। এটিকে অনেকেই পারসেন্টেজ বা শতকরা চিহ্ণ হিসেবে ভুল করতে পারে, কিন্তু এটি আসলে তা নয় । এটি মূলত একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে।
অপারেটর
এর কাজ
+
আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়।
-
সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।
*
মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে।
/
ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করা যায়।
%
রিমাইন্ডার (Remainder) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে।
এই প্রোগ্রামটি রান করলে নিচের ফলাফল প্রকাশিত হবে।
ইউনারি (Unary) অপারেটর
উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটরের লাগে একটি।
এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । এগুলো হল - +, -, ++, –-, ! উদাহরণ -
ইকুয়ালিটি (Equality) এবং রিলেশনাল(Relational) অপারেটরস
ইকুয়ালিটি (Equality) এবং রিলেশনাল(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা।
উদাহরণ
কন্ডিশনাল( Conditional) অপারেটর
&& এবং || এই দু্ই অপারেটরকে কন্ডিশনাল অপারেটর বলে।
উদাহরণ-
চলবে --
Last updated