জাভায় প্রতিটি প্রিমিটিভ টাইপ-এর একটি সাপেক্ষ বিল্ট-ইন র্যাপার ক্লাস থাকে, এবং এই র্যাপার ক্লাসগুলোও ইমিউটেবল। Integer, Float, Double, Byte, ইত্যাদি কিছু বিল্ট-ইন র্যাপার ক্লাস। আমাদের কোডে ilyen র্যাপার ব্যবহার করার প্রধান উদ্দেশ্য হলো সংশ্লিষ্ট প্রিমিটিভ টাইপের টাইপ ইনফরমেশন অ্যাক্সেস করা, অটো-বক্সিং ফিচার, যেখানে একটি প্রিমিটিভ ডেটা স্বয়ংক্রিয়ভাবে অবজেক্ট রেফারেন্স টাইপে প্রোমোট হয়, এবং প্রিমিটিভ টাইপ ডেটা ডেটা স্ট্রাকচারের মাধ্যমে ঘুরায়ে চলাচল করা।
আমরা র্যাপার ক্লাস-এর একটি ইনস্ট্যান্স তৈরি করতে পারি new অপারেটর ব্যবহার করে, এবং Integer এর মতো টাইপের মধ্যে valueOf() মেথড ব্যবহার করে একটি র্যাপার অবজেক্ট তৈরি করতে পারি। Integer.valueOf() মেথড একই ভ্যালুর সাথে হিপে এক্সিস্টিং Integer অবজেক্টগুলো পুনরাবৃত্তি ব্যবহার করে। যদি একই ভ্যালুর একটি অবজেক্ট হিপে উপস্থিত থাকে, তবে এটি এক্সিস্টিং অবজেক্টের একটি রেফারেন্স রিটার্ন করে, অন্যথায় নতুন তৈরি Integer অবজেক্টের রেফারেন্স রিটার্ন করে।
নিচের কোড স্নিপেটগুলোতে, আমরা JShell টুলে র্যাপার অবজেক্ট তৈরি করতে পারি।
স্নিপেট-১
jshell> Integer int1 = new Integer(10); int1 ==> 10 jshell> Integer int2 = new Integer(10); int2 ==> 10 jshell> Integer int3 = Integer.valueOf(10); int3 ==> 10 jshell> Integer int4 = Integer.valueOf(10); int4 ==> 10 jshell> int1 == int2; $7 ==> true jshell> int3 == int4; $8 ==> true
স্নিপেট-২
jshell> Integer abc1 = Integer.valueOf(700); abc1 ==> 700 jshell> Integer abc2 = 700; abc2 ==> 700 jshell> Integer abc3 = 700; abc3 ==> 700 jshell> abc2 == abc3; $4 ==> false jshell> Integer.MAX_VALUE; $5 ==> 2147483647 jshell> Integer.MIN_VALUE; $6 ==> -2147483648 jshell> Integer.SIZE; $7 ==> 32 jshell> Integer.BYTES; $8 ==> 4