Java তে প্রিমিটিভ (Primitive) এবং নন-প্রিমিটিভ (Non-Primitive) ডেটা টাইপসের মধ্যে পার্থক্য রয়েছে। এগুলির বৈশিষ্ট্য এবং ব্যবহার ভিন্ন। এখানে প্রিমিটিভ এবং নন-প্রিমিটিভ ডেটা টাইপস সম্পর্কে বিস্তারিত আলোচনা করা হলো।
প্রিমিটিভ ডেটা টাইপস (Primitive Data Types)
Java তে প্রিমিটিভ ডেটা টাইপস সরাসরি মান সংরক্ষণ করে এবং এগুলি সাধারণত ছোট এবং স্থির মেমোরি জায়গা দখল করে। মোট ৮টি প্রিমিটিভ ডেটা টাইপস রয়েছে, যা নিম্নরূপ:
byte: ১ বাইট মেমোরি দখল করে। পরিসর: -১২৮ থেকে ১২৭।
byte age = 25;
short: ২ বাইট মেমোরি দখল করে। পরিসর: -৩২৭৬৮ থেকে ৩২৭৬৭।
short temperature = 250;
int: ৪ বাইট মেমোরি দখল করে। পরিসর: -২,১৪৭,৪৮৩,৬৪৮ থেকে ২,১৪৭,৪৮৩,৬৪৭।
int salary = 50000;
long: ৮ বাইট মেমোরি দখল করে। বড় সংখ্যা সংরক্ষণের জন্য ব্যবহৃত হয়। পরিসর: -৯,২২৩,৩৭২,০৩৬,৮৫৪,৭৭৫,৮০৮ থেকে ৯,২২৩,৩৭২,০৩৬,৮৫৪,৭৭৫,৮০৭।
long distance = 123456789L;
float: ৪ বাইট মেমোরি দখল করে। দশমিকের পর ৭ ডিজিট পর্যন্ত সঠিকতা।
float price = 19.99f;
double: ৮ বাইট মেমোরি দখল করে। দশমিকের পর ১৫ ডিজিট পর্যন্ত সঠিকতা।
double balance = 1999.99;
char: ২ বাইট মেমোরি দখল করে। একক অক্ষর সংরক্ষণ করে।
char grade = 'A';
boolean: সত্য (true) বা মিথ্যা (false) মান সংরক্ষণ করে।
boolean isJavaFun = true;
প্রিমিটিভ ডেটা টাইপসের বৈশিষ্ট্য
- সরাসরি মেমোরিতে মান সংরক্ষণ করে।
- আকার এবং পরিসর পূর্বনির্ধারিত, তাই মেমোরি ব্যবস্থাপনায় কার্যকর।
- মূলধারার প্রোগ্রামিংয়ের জন্য উপযুক্ত, যেমন গণনা এবং লজিক্যাল অপারেশন।
নন-প্রিমিটিভ ডেটা টাইপস (Non-Primitive Data Types)
নন-প্রিমিটিভ ডেটা টাইপস (বা Reference Data Types) সাধারণত অবজেক্ট বা অবজেক্টের রেফারেন্স ধারণ করে এবং আরও জটিল ডেটা গঠন তৈরি করতে ব্যবহৃত হয়। এটি প্রিমিটিভ ডেটা টাইপসের চেয়ে বড় এবং বেশি মেমোরি ব্যবহার করে।
সাধারণ নন-প্রিমিটিভ ডেটা টাইপস:
String: অক্ষরের ক্রম বা স্ট্রিং সংরক্ষণ করে। এটি Java এর একটি ক্লাস।
String name = "John Doe";
Array: একই ধরনের একাধিক মান সংরক্ষণ করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট আকারের ডেটা গঠন।
int[] numbers = {1, 2, 3, 4, 5};
Class: ব্যবহারকারীর নিজস্ব ডেটা টাইপ তৈরি করতে ব্যবহৃত হয়, যাতে ভিন্ন ভিন্ন ডেটা ও মেথড সংরক্ষণ করা যায়।
public class Car {
String color;
int speed;
}
Interface: এটি একটি কনট্রাক্ট বা চুক্তির মতো যা ক্লাসের জন্য কিছু নির্দিষ্ট মেথড নির্ধারণ করে।
public interface Vehicle {
void move();
}
নন-প্রিমিটিভ ডেটা টাইপসের বৈশিষ্ট্য
- সরাসরি মান সংরক্ষণ করে না, বরং অবজেক্টের রেফারেন্স সংরক্ষণ করে।
- আকার ও পরিসর স্থির নয় এবং প্রোগ্রাম অনুযায়ী পরিবর্তনশীল।
- ডেটা গঠন তৈরি করতে এবং জটিল ডেটা পরিচালনায় কার্যকর।
প্রিমিটিভ এবং নন-প্রিমিটিভ ডেটা টাইপসের পার্থক্য
| বৈশিষ্ট্য | প্রিমিটিভ ডেটা টাইপস | নন-প্রিমিটিভ ডেটা টাইপস |
|---|---|---|
| সংরক্ষণ পদ্ধতি | সরাসরি মান সংরক্ষণ করে। | রেফারেন্স বা অবজেক্টের ঠিকানা সংরক্ষণ করে। |
| আকার এবং পরিসর | নির্দিষ্ট এবং পূর্বনির্ধারিত। | পরিবর্তনশীল এবং অ-পূর্বনির্ধারিত। |
| নাল মান ধারণ করা | নাল মান ধারণ করতে পারে না। | নাল মান ধারণ করতে পারে। |
| ক্লাস বা অবজেক্টের উপর নির্ভরশীলতা | অবজেক্ট নির্ভরশীল নয়। | অবজেক্ট ও ক্লাস নির্ভরশীল। |
| ডিফল্ট মান | প্রতিটি প্রিমিটিভ টাইপের নির্দিষ্ট ডিফল্ট মান রয়েছে। | ডিফল্ট মান null। |
উদাহরণ: প্রিমিটিভ এবং নন-প্রিমিটিভ ডেটা টাইপস
নিচে Java প্রোগ্রামে প্রিমিটিভ এবং নন-প্রিমিটিভ ডেটা টাইপস ব্যবহার করে দেখানো হলো:
public class DataTypeExample {
public static void main(String[] args) {
// প্রিমিটিভ ডেটা টাইপস
int age = 25;
double salary = 50000.50;
char grade = 'A';
boolean isActive = true;
// নন-প্রিমিটিভ ডেটা টাইপস
String name = "Alice";
int[] scores = {85, 90, 95};
System.out.println("Age: " + age);
System.out.println("Salary: " + salary);
System.out.println("Grade: " + grade);
System.out.println("Is Active: " + isActive);
System.out.println("Name: " + name);
System.out.print("Scores: ");
for (int score : scores) {
System.out.print(score + " ");
}
}
}
সারসংক্ষেপ
Java তে প্রিমিটিভ ডেটা টাইপস সরাসরি মেমোরিতে মান সংরক্ষণ করে এবং নির্দিষ্ট আকার ধারণ করে, যা সহজ ও দ্রুতগতিসম্পন্ন। অন্যদিকে, নন-প্রিমিটিভ ডেটা টাইপস সাধারণত অবজেক্ট হিসেবে সংরক্ষিত হয় এবং বেশি মেমোরি ব্যবহার করে, যা জটিল ডেটা গঠন তৈরি করতে সাহায্য করে।