Wrapper Classes Java এর primitive data types (যেমন int, char, double, ইত্যাদি) কে objects হিসেবে রূপান্তরিত করতে ব্যবহৃত হয়। এটি Java-তে primitive types কে object type এর মত ব্যবহার করার সুযোগ দেয় এবং autoboxing এবং unboxing এর মাধ্যমে সহজে কাজ করতে সহায়তা করে।
Java-তে primitive data types সরাসরি objects হিসেবে ব্যবহৃত হতে পারে না, কিন্তু কিছু পরিস্থিতিতে object হিসেবে এই ডেটা টাইপগুলোকে ব্যবহার করতে হয়, যেমন Collections (যেমন ArrayList, HashMap ইত্যাদি) এবং Generics-এ primitive types ব্যবহার করা সম্ভব নয়। এ কারণে wrapper classes তৈরি করা হয়েছে।
Java 1.5-এ autoboxing এবং unboxing এর সুবিধা যুক্ত করা হয়, যার মাধ্যমে primitive types এবং wrapper classes এর মধ্যে রূপান্তর করা খুবই সহজ হয়ে যায়।
Wrapper ক্লাসসমূহ:
Java-তে মোট আটটি primitive data types আছে, এবং প্রত্যেকটির জন্য একটি wrapper class রয়েছে। এই ক্লাসগুলো java.lang প্যাকেজে অন্তর্ভুক্ত।
| Primitive Type | Wrapper Class |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Wrapper ক্লাসের বৈশিষ্ট্য:
- Object Representation: Wrapper ক্লাসগুলো primitive types কে object হিসেবে রেপ্রেজেন্ট (প্রতিনিধিত্ব) করে।
- Utility Methods: এই ক্লাসগুলোতে primitive types-কে object হিসেবে ব্যবহার করার জন্য বিভিন্ন ইউটিলিটি মেথড থাকে। যেমন, string থেকে number এ রূপান্তর, number কে string এ রূপান্তর ইত্যাদি।
- Autoboxing and Unboxing: Java 5 থেকে wrapper ক্লাসগুলো primitive types-কে automatically box এবং unbox করার সুবিধা প্রদান করে (autoboxing/unboxing)।
- Immutability: Wrapper ক্লাসগুলো immutable (অপরিবর্তনীয়), অর্থাৎ একবার একটি wrapper object তৈরি হলে সেটির value পরিবর্তন করা যায় না।
Wrapper ক্লাসগুলোর উদাহরণ:
Integer Example:
Integerহলintএর wrapper class। এটি primitiveintএর মানকে object হিসেবে ধারণ করতে সক্ষম।public class WrapperExample { public static void main(String[] args) { int num = 10; // Autoboxing (primitive to object) Integer integerObject = num; // This is automatically boxed into an Integer object System.out.println("Integer Object: " + integerObject); // Unboxing (object to primitive) int primitiveInt = integerObject; // This is automatically unboxed into a primitive int System.out.println("Primitive int: " + primitiveInt); } }Output:
Integer Object: 10 Primitive int: 10Character Example:
Characterহলcharএর wrapper class।public class WrapperExample { public static void main(String[] args) { char ch = 'A'; // Autoboxing (primitive to object) Character charObject = ch; System.out.println("Character Object: " + charObject); // Unboxing (object to primitive) char primitiveChar = charObject; System.out.println("Primitive char: " + primitiveChar); } }Output:
Character Object: A Primitive char: ABoolean Example:
Booleanহলbooleanএর wrapper class। এর মধ্যেtrueবাfalseএর মান ধারণ করা হয়।public class WrapperExample { public static void main(String[] args) { boolean bool = true; // Autoboxing (primitive to object) Boolean booleanObject = bool; System.out.println("Boolean Object: " + booleanObject); // Unboxing (object to primitive) boolean primitiveBool = booleanObject; System.out.println("Primitive boolean: " + primitiveBool); } }Output:
Boolean Object: true Primitive boolean: true
Wrapper ক্লাসের কিছু ইউটিলিটি মেথড:
parseXXX() Method:
Stringথেকে primitive types-এ রূপান্তরের জন্য ব্যবহার হয়।String str = "123"; int num = Integer.parseInt(str); // Converts String to int System.out.println(num); // Output: 123valueOf() Method: এটি একটি String বা primitive value থেকে wrapper object তৈরি করে।
int num = 100; Integer integerObject = Integer.valueOf(num); // Converts int to Integer object System.out.println(integerObject); // Output: 100toString() Method: primitive value কে String-এ রূপান্তর করার জন্য।
Integer integerObject = 100; String str = integerObject.toString(); // Converts Integer to String System.out.println(str); // Output: "100"compareTo() Method: দুইটি wrapper object এর তুলনা করতে ব্যবহৃত হয়।
Integer num1 = 100; Integer num2 = 200; System.out.println(num1.compareTo(num2)); // Output: -1 (because 100 < 200)isNaN() Method:
FloatএবংDoubleএর মধ্যেisNaN()মেথড ব্যবহৃত হয়, যা চেক করে যে value NaN (Not-a-Number) কিনা।Double num = Double.NaN; System.out.println(num.isNaN()); // Output: true
Autoboxing এবং Unboxing:
Autoboxing এবং Unboxing হল একটি সুবিধা যা Java 5 থেকে এসেছে। এর মাধ্যমে primitive types এবং wrapper objects এর মধ্যে রূপান্তর অটোমেটিক্যালি হয়ে থাকে।
Autoboxing: Primitive type থেকে wrapper class এ রূপান্তর।
int num = 10; Integer integerObj = num; // AutoboxingUnboxing: Wrapper class থেকে primitive type এ রূপান্তর।
Integer integerObj = 10; int num = integerObj; // Unboxing
Wrapper ক্লাসের সুবিধা:
- Collections Framework:
ArrayList,HashMapইত্যাদি জেনেরিক ক্লাসগুলোতে primitive types ব্যবহার করা সম্ভব নয়, তাই wrapper classes ব্যবহার করা হয়। - Autoboxing and Unboxing: Primitive types এবং wrapper objects এর মধ্যে সহজে রূপান্তর করা সম্ভব, যেটি প্রোগ্রামিংকে আরও সহজ এবং পড়তে সুবিধাজনক করে তোলে।
- Utility Methods: Wrapper ক্লাসগুলোর অনেক ইউটিলিটি মেথড রয়েছে যেগুলোর মাধ্যমে primitive values গুলোর মধ্যে বিভিন্ন পরিবর্তন করা যায়, যেমন string to number conversion, number formatting, কম্পেয়ারিং ইত্যাদি।
Java-তে Wrapper Classes প্রাথমিক ডেটা টাইপগুলোকে object আকারে রূপান্তর করতে সহায়তা করে। এটি প্রোগ্রামিংয়ের অনেক সুবিধা প্রদান করে, যেমন autoboxing, unboxing, এবং Utility Methods। Wrapper ক্লাস ব্যবহার করে আপনি primitive types-এর সাথে সম্পর্কিত অনেক গুরুত্বপূর্ণ কাজ করতে পারেন, যেমন string manipulation, number parsing, এবং collections ব্যবস্থাপনা।
Wrapper ক্লাস Java তে প্রিমিটিভ ডেটা টাইপগুলির জন্য একটি অবজেক্ট ক্লাস সরবরাহ করে। Java তে সমস্ত primitive data types যেমন int, char, boolean ইত্যাদি অবজেক্ট টাইপের ডেটা টাইপের মাধ্যমে কাজ করা সম্ভব নয়। কিন্তু অনেক সময় আমাদের object টাইপের ডেটা প্রয়োজন হয় (যেমন Collections API), তখন Wrapper Classes সাহায্য করে।
Wrapper ক্লাস কী?
Wrapper ক্লাস গুলি প্রিমিটিভ ডেটা টাইপগুলির জন্য তৈরি করা অবজেক্ট ক্লাস। Java তে প্রত্যেকটি primitive type-এর জন্য একটি Wrapper class রয়েছে, যা সেই primitive type কে একটি object-এ রূপান্তরিত করতে সক্ষম। Wrapper class গুলি Java-এ primitive types এবং objects এর মধ্যে পারস্পরিক রূপান্তরের কাজ সম্পন্ন করে।
Primitive Types এবং তাদের Wrapper Classes:
| Primitive Type | Wrapper Class |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Wrapper ক্লাসের প্রয়োজনীয়তা:
Collections API-এর সাথে কাজ:
- Collections Framework Java-তে
List,Set,Mapইত্যাদি ডেটা স্ট্রাকচার ব্যবহারের জন্য object টাইপের উপাদান প্রয়োজন হয়। কিন্তু primitive types (int,char,boolean, etc.) শুধুমাত্র primitive values হিসেবে কাজ করতে পারে, Object হিসেবে নয়। তাই Wrapper classes ব্যবহার করে primitive values-কে objects-এ রূপান্তর করা হয়।
উদাহরণ:
ArrayList<Integer>এintব্যবহার করা সম্ভব নয়, কিন্তুIntegerব্যবহার করা যায়।- Collections Framework Java-তে
Autoboxing and Unboxing:
- Java 5 থেকে autoboxing এবং unboxing নামে একটি ফিচার এসেছে, যা primitive types এবং তাদের corresponding wrapper classes এর মধ্যে স্বয়ংক্রিয় রূপান্তর করতে সাহায্য করে।
- Autoboxing: primitive value থেকে object এ রূপান্তর।
- Unboxing: object থেকে primitive value এ রূপান্তর।
উদাহরণ:
Integer intObj = 10; // Autoboxing: int -> Integer int x = intObj; // Unboxing: Integer -> int- Java 5 থেকে autoboxing এবং unboxing নামে একটি ফিচার এসেছে, যা primitive types এবং তাদের corresponding wrapper classes এর মধ্যে স্বয়ংক্রিয় রূপান্তর করতে সাহায্য করে।
Nullability:
- Primitive types কখনো null হতে পারে না, কিন্তু Wrapper classes null হতে পারে। এটি গুরুত্বপূর্ণ যখন আপনাকে nullable values প্রয়োজন হয়, যেমন ডাটাবেস বা কোনো API-তে null ভ্যালু গ্রহণ করতে।
উদাহরণ:
Integer i = null; // Possible to assign null to Integer int x = null; // Compilation error, because primitive types cannot be nullUtility Methods:
- Wrapper classes বিভিন্ন utility methods সরবরাহ করে যা primitive types নিয়ে কাজ করতে সহায়তা করে, যেমন সংখ্যা থেকে স্ট্রিং এ রূপান্তর বা স্ট্রিং থেকে সংখ্যা রূপান্তর। উদাহরণস্বরূপ,
Integer.parseInt()অথবাDouble.parseDouble()মেথড।
উদাহরণ:
int num = Integer.parseInt("123"); // String to int conversion String str = Integer.toString(456); // int to String conversion- Wrapper classes বিভিন্ন utility methods সরবরাহ করে যা primitive types নিয়ে কাজ করতে সহায়তা করে, যেমন সংখ্যা থেকে স্ট্রিং এ রূপান্তর বা স্ট্রিং থেকে সংখ্যা রূপান্তর। উদাহরণস্বরূপ,
Comparisons and Sorting:
- Wrapper ক্লাসগুলি Comparable ইন্টারফেস ইমপ্লিমেন্ট করে, যা primitive types এর সাথে সহজে comparison করতে সাহায্য করে। এটা বিশেষভাবে দরকারি যখন sorting বা comparison করা হয়।
উদাহরণ:
Integer num1 = 10; Integer num2 = 20; System.out.println(num1.compareTo(num2)); // Output: -1 (num1 < num2)
Wrapper ক্লাসের উদাহরণ:
public class WrapperExample {
public static void main(String[] args) {
// Autoboxing: primitive int to Integer object
Integer intObject = 100;
System.out.println("Integer object: " + intObject);
// Unboxing: Integer object to primitive int
int num = intObject; // Autounboxing
System.out.println("Primitive int: " + num);
// Using utility methods of Wrapper class
String str = "200";
int parsedInt = Integer.parseInt(str); // String to int
System.out.println("Parsed int: " + parsedInt);
// Wrapper class to String conversion
String intToString = Integer.toString(123); // int to String
System.out.println("Converted String: " + intToString);
}
}
Output:
Integer object: 100
Primitive int: 100
Parsed int: 200
Converted String: 123
Wrapper classes Java-তে primitive types এবং objects এর মধ্যে পারস্পরিক রূপান্তর সহজ করে, যা Collections API ব্যবহার, nullability, utility methods এবং comparison/sorting এর জন্য অত্যন্ত প্রয়োজনীয়। Autoboxing এবং Unboxing এর সুবিধার মাধ্যমে, Java এর primitive types এবং Wrapper classes এর মধ্যে যেকোনো রূপান্তর অত্যন্ত সহজ ও সুবিধাজনক হয়ে ওঠে।
Autoboxing এবং Unboxing হল Java-এর সুবিধাজনক বৈশিষ্ট্য যা primitive types এবং wrapper classes এর মধ্যে স্বয়ংক্রিয় রূপান্তরকে সহজ করে তোলে। Java 5 এ Autoboxing এবং Unboxing চালু হয়, এবং এটি কোডের সহজতর এবং পরিস্কার করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।
Primitive এবং Object (Wrapper Class) এর মধ্যে কনভার্ট করা:
- Primitive Types: Java-তে ৮টি primitive data types রয়েছে:
byteshortintlongfloatdoublecharboolean
- Wrapper Classes: Java-এর wrapper classes হল ক্লাসগুলি যা primitive types এর জন্য অবজেক্ট তৈরি করে। এই wrapper classes হল:
Byte,Short,Integer,Long,Float,Double,Character,Boolean
Autoboxing (Primitive to Object):
Autoboxing হল Java-এর একটি প্রক্রিয়া, যেখানে primitive type এর মান স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট wrapper class এর অবজেক্টে রূপান্তরিত হয়। অর্থাৎ, primitive type কে wrapper class-এর অবজেক্টে রূপান্তর করার জন্য আলাদা কোড লেখার প্রয়োজন হয় না, Java এটা নিজেই করে ফেলে।
Example of Autoboxing:
public class AutoboxingExample {
public static void main(String[] args) {
int num = 10;
// Autoboxing: Primitive int to Integer object
Integer numObj = num; // Java does this automatically
System.out.println("Integer object: " + numObj); // Output: Integer object: 10
}
}
এখানে, primitive int ধীরে ধীরে Integer object তে রূপান্তরিত হয়েছে, যা Autoboxing।
Unboxing (Object to Primitive):
Unboxing হল Java-এর একটি প্রক্রিয়া, যেখানে wrapper class এর অবজেক্ট স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট primitive type-এ রূপান্তরিত হয়। এটি Autoboxing এর বিপরীত প্রক্রিয়া।
Example of Unboxing:
public class UnboxingExample {
public static void main(String[] args) {
Integer numObj = new Integer(100);
// Unboxing: Integer object to primitive int
int num = numObj; // Java does this automatically
System.out.println("Primitive int: " + num); // Output: Primitive int: 100
}
}
এখানে, Integer object স্বয়ংক্রিয়ভাবে primitive int এ রূপান্তরিত হয়েছে, যা Unboxing।
Autoboxing এবং Unboxing এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Autoboxing | Unboxing |
|---|---|---|
| কাজ | Primitive type to Wrapper object | Wrapper object to Primitive type |
| প্রক্রিয়া | Primitive value automatically wrapped in an object | Wrapper object automatically unwrapped into primitive |
| যখন হয় | যখন Primitive type কে object হিসেবে প্রয়োজন হয় | যখন Object কে primitive type এ পরিবর্তন করতে হয় |
| Example | int i = 10; Integer obj = i; | Integer obj = 10; int i = obj; |
Autoboxing এবং Unboxing এর সুবিধা:
- সহজ কোড: Autoboxing এবং Unboxing কোড লেখাকে সহজ এবং পরিষ্কার করে তোলে, কারণ developer কে manually object creation বা primitive extraction করতে হয় না।
- কার্যকরী: এই প্রক্রিয়াগুলি Java-এর ইন্টিগ্রেটেড ফিচার, তাই কোড স্বয়ংক্রিয়ভাবে চলতে থাকে।
- কমপ্লেক্সিটি কমানো: পূর্বে primitive types এবং তাদের wrapper class এর মধ্যে কনভার্সন করতে আলাদা কোড লিখতে হত, কিন্তু এখন এটি Java স্বয়ংক্রিয়ভাবে করে দেয়।
Example with Collection (Autoboxing and Unboxing):
Java Collections Framework, যেমন ArrayList এবং অন্যান্য collection types, objects এর সাথে কাজ করে। তাই primitive types যখন collection এ যোগ করতে হয় তখন Autoboxing এবং Unboxing কাজ করে।
Autoboxing in Collection:
import java.util.ArrayList;
public class AutoboxingInCollection {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
// Autoboxing: Primitive int to Integer object
list.add(10); // Java automatically converts int to Integer
System.out.println(list); // Output: [10]
}
}
Unboxing in Collection:
import java.util.ArrayList;
public class UnboxingInCollection {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // Autoboxing: int to Integer
// Unboxing: Integer object to primitive int
int num = list.get(0); // Java automatically converts Integer to int
System.out.println(num); // Output: 10
}
}
Autoboxing এবং Unboxing এর Limitations:
- Performance: Autoboxing এবং Unboxing কার্যকর হলেও কিছু পরিমাণ performance overhead সৃষ্টি করতে পারে। অতিরিক্ত object creation এবং conversion সিস্টেমের কার্যকারিতা কিছুটা কমিয়ে দিতে পারে।
- Null Handling: যখন null মান একটি wrapper class object এর জন্য ব্যবহৃত হয়, তখন NullPointerException সৃষ্টি হতে পারে যদি unboxing করার সময় null value পাওয়া যায়।
Integer num = null;
int value = num; // Throws NullPointerException during unboxing
Autoboxing এবং Unboxing Java-তে primitive types এবং wrapper objects-এর মধ্যে স্বয়ংক্রিয় রূপান্তর করার একটি সুবিধাজনক উপায়। এটি কোডের নমনীয়তা, পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি করে, তবে এগুলি ব্যবহারের সময় performance এবং null handling নিয়ে সতর্ক থাকা দরকার।
Java.lang প্যাকেজটি Java এর অন্যতম গুরুত্বপূর্ণ প্যাকেজ, যা Java প্রোগ্রামিং ভাষার মৌলিক বৈশিষ্ট্যগুলি এবং ক্লাসগুলির সমর্থন প্রদান করে। এই প্যাকেজের অন্তর্গত Wrapper ক্লাসসমূহ হল এমন ক্লাস যা প্রিমিটিভ ডেটা টাইপগুলির (যেমন int, double, boolean, char) জন্য অবজেক্ট তৈরি করতে ব্যবহৃত হয়। Java তে প্রিমিটিভ ডেটা টাইপগুলি মূলত অবজেক্ট নয়, কিন্তু যদি আমাদের ওই ডেটা টাইপগুলিকে অবজেক্ট হিসেবে ব্যবহার করতে হয় (যেমন জেনেরিক্স বা কালেকশনে), তখন Wrapper ক্লাস ব্যবহার করা হয়।
Wrapper ক্লাসগুলি কী এবং কেন ব্যবহৃত হয়?
Java-তে Wrapper ক্লাস প্রিমিটিভ ডেটা টাইপের জন্য অবজেক্ট তৈরি করতে ব্যবহৃত হয়, যা তাদের সাথে অপারেশন করা সহজ করে এবং বিভিন্ন API-তে অবজেক্ট হিসেবে ব্যবহৃত হয়। এটি প্রিমিটিভ টাইপ এবং তাদের সমতুল্য ক্লাসের মধ্যে অটো-বক্সিং এবং আনবক্সিং সমর্থন করে।
প্রধান Wrapper ক্লাসসমূহ:
Integer:
Integerক্লাসintপ্রিমিটিভ ডেটা টাইপের জন্য অবজেক্ট হিসেবে কাজ করে।- এটি
intমান সংরক্ষণ এবং বিভিন্ন পদ্ধতির মাধ্যমে অপারেশন পরিচালনা করতে সাহায্য করে (যেমন পার্সিং, মিথডগুলি, ইত্যাদি)।
উদাহরণ:
Integer intObj = 10; // Auto-boxing int i = intObj; // Auto-unboxing System.out.println("Integer value: " + intObj); System.out.println("int value: " + i);Double:
Doubleক্লাসdoubleপ্রিমিটিভ ডেটা টাইপের জন্য ব্যবহার করা হয়। এটিdoubleমান ধারণ এবং প্রসেস করতে ব্যবহৃত হয়।- এই ক্লাসটি সাধারণত দশমিক সংখ্যার মান সংগ্রহ করতে ব্যবহৃত হয় এবং এর মধ্যে গাণিতিক অপারেশন যেমন যোগ, বিয়োগ, গুণ, ভাগ ইত্যাদি করা যায়।
উদাহরণ:
Double dObj = 20.5; // Auto-boxing double d = dObj; // Auto-unboxing System.out.println("Double value: " + dObj); System.out.println("double value: " + d);Boolean:
Booleanক্লাসbooleanপ্রিমিটিভ ডেটা টাইপের জন্য ব্যবহৃত হয়। এটিtrueবাfalseমান ধারণ করে এবং Boolean অপারেশন যেমন লজিক্যাল AND, OR, NOT ইত্যাদি পরিচালনা করতে ব্যবহার করা হয়।Boolean.parseBoolean(String)এবংBoolean.valueOf(String)এর মাধ্যমে স্ট্রিং মানকে Boolean মানে কনভার্ট করা যায়।
উদাহরণ:
Boolean boolObj = true; // Auto-boxing boolean bool = boolObj; // Auto-unboxing System.out.println("Boolean value: " + boolObj); System.out.println("boolean value: " + bool);Character:
Characterক্লাসcharপ্রিমিটিভ ডেটা টাইপের জন্য ব্যবহৃত হয়। এটি একটি একক ক্যারেক্টার ধারণ করে এবং ক্যারেক্টারের উপর বিভিন্ন কার্যক্রম যেমনisDigit(),isLetter(),toUpperCase()ইত্যাদি সমর্থন করে।
উদাহরণ:
Character charObj = 'A'; // Auto-boxing char c = charObj; // Auto-unboxing System.out.println("Character value: " + charObj); System.out.println("char value: " + c);
প্রধান Wrapper ক্লাসের ফিচার এবং মেথড:
- Auto-boxing:
- এটি একটি প্রিমিটিভ ডেটা টাইপকে তার সমতুল্য Wrapper ক্লাসের অবজেক্টে রূপান্তরিত করার প্রক্রিয়া।
উদাহরণ:
Integer obj = 5; // int value 5 is automatically converted to Integer object
- Auto-unboxing:
- এটি Wrapper ক্লাসের অবজেক্টকে তার প্রিমিটিভ ডেটা টাইপে রূপান্তরিত করার প্রক্রিয়া।
উদাহরণ:
int num = obj; // Integer object is automatically converted to int
প্রিমিটিভ ডেটা টাইপ থেকে অবজেক্টে রূপান্তর (ValueOf):
Integer.valueOf(int),Double.valueOf(double),Boolean.valueOf(String)ইত্যাদি মেথডগুলি প্রিমিটিভ টাইপকে Wrapper ক্লাসে রূপান্তর করতে ব্যবহৃত হয়।
উদাহরণ:
Integer intObj = Integer.valueOf(100);স্ট্রিং থেকে প্রিমিটিভ ডেটা টাইপে রূপান্তর (Parse):
Integer.parseInt(String),Double.parseDouble(String)ইত্যাদি মেথড স্ট্রিংকে সংশ্লিষ্ট প্রিমিটিভ ডেটা টাইপে রূপান্তর করতে ব্যবহৃত হয়।
উদাহরণ:
int num = Integer.parseInt("123"); double price = Double.parseDouble("45.67");- বিভিন্ন মান পরীক্ষা (Constants):
Boolean.TRUE,Boolean.FALSE,Character.MIN_VALUEইত্যাদি Wrapper ক্লাসে বিভিন্ন কনস্ট্যান্ট ডিফাইন করা থাকে যা প্রাসঙ্গিক মান গুলি ধারণ করে।
Wrapper ক্লাসের ব্যবহার এবং প্রয়োজনীয়তা:
- Generics:
- Java Generics শুধুমাত্র অবজেক্ট টাইপের সঙ্গে কাজ করে, তাই
intবাcharএর মতো প্রিমিটিভ টাইপ ব্যবহৃত হতে পারে না। এ কারণে, Wrapper ক্লাসগুলি ব্যবহার করতে হয়, যেমনList<Integer>,List<Character>ইত্যাদি।
- Java Generics শুধুমাত্র অবজেক্ট টাইপের সঙ্গে কাজ করে, তাই
- Collections Framework:
- Java Collection Framework (যেমন
List,Set,Map) শুধুমাত্র অবজেক্ট টাইপের সঙ্গে কাজ করে, তাই সেখানে প্রিমিটিভ ডেটা টাইপ ব্যবহৃত হতে পারে না। Wrapper ক্লাসের সাহায্যে আপনি সেগুলিকে ব্যবহার করতে পারেন।
- Java Collection Framework (যেমন
- Null Handling:
- প্রিমিটিভ টাইপে
nullমান সম্ভব নয়, কিন্তু Wrapper ক্লাসেnullব্যবহার করা সম্ভব, যেটি বিশেষত ডেটাবেস বা সার্ভার কমিউনিকেশনে প্রয়োজনে কাজে আসে।
- প্রিমিটিভ টাইপে
Java তে Wrapper ক্লাস (যেমন Integer, Double, Boolean, Character) প্রিমিটিভ ডেটা টাইপগুলির জন্য অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এগুলি অটো-বক্সিং এবং আনবক্সিং সমর্থন করে এবং Java এর Generics এবং Collections Framework-এ কার্যকরীভাবে ব্যবহৃত হয়। Wrapper ক্লাসগুলির মাধ্যমে আপনি প্রিমিটিভ টাইপের মানকে অবজেক্ট হিসেবে ব্যবহার করতে পারেন, যা বিভিন্ন API এবং ডেটাবেস কমিউনিকেশনে অত্যন্ত উপকারী।
Java-তে Wrapper Classes হল প্রাইমিটিভ ডেটা টাইপগুলির (যেমন int, char, boolean) অবজেক্ট রিপ্রেজেন্টেশন। Java-তে Wrapper Classes ব্যবহার করা হয়, যেমন Integer, Double, Character, Boolean, ইত্যাদি। এগুলি প্রাইমিটিভ ডেটা টাইপগুলির জন্য অতিরিক্ত ফাংশনালিটি প্রদান করে। কিছু গুরুত্বপূর্ণ এবং সাধারণভাবে ব্যবহৃত Wrapper ক্লাসের মেথডসমূহ হলো: parseInt(), valueOf(), এবং isNaN()।
1. parseInt() Method:
parseInt() মেথডটি String ডেটাকে একটি int (প্রাইমিটিভ টাইপ) এ কনভার্ট করার জন্য ব্যবহৃত হয়। এটি Integer ক্লাসের একটি স্ট্যাটিক মেথড।
Syntax:
public static int parseInt(String s) throws NumberFormatException
s: একটিStringযা একটি পূর্ণসংখ্যা (integer) ধারণ করে।
Usage Example:
public class ParseIntExample {
public static void main(String[] args) {
String str = "1234";
int number = Integer.parseInt(str); // Converting String to int
System.out.println("The number is: " + number); // Output: 1234
// Invalid input example
try {
String invalidStr = "abc";
int invalidNumber = Integer.parseInt(invalidStr); // Throws NumberFormatException
} catch (NumberFormatException e) {
System.out.println("Invalid input: " + e.getMessage()); // Output: Invalid input: For input string: "abc"
}
}
}
Explanation:
parseInt()একটিStringপ্যারামিটার নেয় এবং তা একটিintটাইপে কনভার্ট করে।- যদি
Stringটিতে কোনো বৈধ পূর্ণসংখ্যা না থাকে (যেমন "abc"), তবে এটি একটিNumberFormatExceptionছুড়ে ফেলবে।
2. valueOf() Method:
valueOf() মেথডটি Wrapper Classes (যেমন Integer, Double, Boolean) ব্যবহার করে একটি প্রাইমিটিভ টাইপ থেকে অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি স্ট্যাটিক মেথড এবং এটি একটি অবজেক্ট রিটার্ন করে।
Syntax (Integer Example):
public static Integer valueOf(int i)
i: একটি প্রাইমিটিভintটাইপের মান।
Usage Example:
public class ValueOfExample {
public static void main(String[] args) {
int num = 42;
Integer integerObj = Integer.valueOf(num); // Convert int to Integer object
System.out.println("Integer object: " + integerObj); // Output: 42
// String to Integer conversion
String str = "100";
Integer strToInt = Integer.valueOf(str); // Convert String to Integer
System.out.println("Converted String to Integer: " + strToInt); // Output: 100
}
}
Explanation:
valueOf()মেথডটি একটি primitive মান (যেমনint,double,boolean) গ্রহণ করে এবং একটি corresponding Wrapper class object তৈরি করে।- এটি
Stringথেকেও মান নিতে পারে, যেমনInteger.valueOf("123")।
3. isNaN() Method:
isNaN() মেথডটি Double এবং Float ক্লাসের একটি মেথড, যা একটি সংখ্যাকে NaN (Not-a-Number) কিনা তা যাচাই করে। এটি সাধারণত floating-point মানের ক্ষেত্রে ব্যবহৃত হয়।
Syntax:
public boolean isNaN(double v)
v: একটিdoubleটাইপের মান যা যাচাই করতে হবে।
Usage Example:
public class IsNaNExample {
public static void main(String[] args) {
double num1 = Double.NaN; // A NaN value
double num2 = 10.5;
System.out.println("Is num1 NaN? " + Double.isNaN(num1)); // Output: true
System.out.println("Is num2 NaN? " + Double.isNaN(num2)); // Output: false
}
}
Explanation:
isNaN()মেথডটি পরীক্ষা করে যে একটি floating-point মান NaN কিনা। যদিNaNহয়, এটিtrueরিটার্ন করে, অন্যথায়falseরিটার্ন করে।- NaN হল একটি বিশেষ মান যা Not-a-Number হিসাবে পরিচিত এবং এটি floating-point arithmetic এর একটি অংশ, যেমন 0.0/0.0 এর ফলাফল
NaNহতে পারে।
Summary of Common Wrapper Methods:
| Method | Class | Description | Usage Example |
|---|---|---|---|
parseInt() | Integer | Converts a String to a primitive int. | int num = Integer.parseInt("1234"); |
valueOf() | Integer, Double, Boolean | Converts primitive types or String to corresponding Wrapper objects. | Integer obj = Integer.valueOf(100); |
isNaN() | Double, Float | Checks if a value is NaN (Not-a-Number) for floating-point numbers. | boolean result = Double.isNaN(0/0); |
parseInt(): স্ট্রিং থেকে একটিintতৈরি করার জন্য ব্যবহৃত হয়।valueOf(): প্রাইমিটিভ টাইপ থেকে একটি Wrapper object তৈরি করে।isNaN(): ফ্লোটিং পয়েন্ট মানের জন্যNaNচেক করার জন্য ব্যবহৃত হয়।
এই মেথডগুলি Java-তে বিভিন্ন ডেটা টাইপের মধ্যে কনভার্সন এবং মান যাচাই করতে সহায়ক, এবং এটি আপনার কোডে স্ট্রং টাইপ সেফটি এবং কার্যকারিতা নিশ্চিত করে।
Read more