কোনও পূর্ণসংখ্যার রেফারেন্সের জন্য কোনও int আক্ষরিকের সরাসরি অ্যাসাইনমেন্ট হ'ল অটো-বক্সিংয়ের একটি উদাহরণ, যেখানে রূপান্তর কোডের জন্য বস্তুর মান সংকলক দ্বারা পরিচালনা করা হয় hand
তাই সংকলনের সময় সংকলক রূপান্তর Integer a = 1000, b = 1000;
করে Integer a = Integer.valueOf(1000), b = Integer.valueOf(1000);
।
সুতরাং এটি এমন Integer.valueOf()
পদ্ধতি যা প্রকৃতপক্ষে আমাদের পূর্ণসংখ্যার অবজেক্টগুলি দেয় এবং যদি আমরা Integer.valueOf()
পদ্ধতির উত্স কোডটি লক্ষ্য করি তবে আমরা পরিষ্কারভাবে দেখতে পাচ্ছি পদ্ধতিটি -128 থেকে 127 (অন্তর্ভুক্ত) সীমাতে পূর্ণসংখ্যার বিষয়গুলিকে ক্যাশে করে।
/**
*
* This method will always cache values in the range -128 to 127,
* inclusive, and may cache other values outside of this range.
*
* @param i an {@code int} value.
* @return an {@code Integer} instance representing {@code i}.
* @since 1.5
*/
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
সুতরাং নতুন পূর্ণসংখ্যার অবজেক্ট তৈরি এবং ফিরে না আসার পরিবর্তে পাসটি ইন্ট আক্ষরিক -128 এর চেয়ে বেশি এবং 127 এর চেয়ে কম Integer.valueOf()
হলে পদ্ধতিটি অভ্যন্তরীণ থেকে পূর্ণসংখ্যার অবজেক্টগুলি প্রদান করে IntegerCache
।
জাভা এই পূর্ণসংখ্যার অবজেক্টগুলিকে ক্যাশে করে কারণ দৈনিক প্রোগ্রামিংয়ে এই পরিসংখ্যানগুলির পরিসীমা প্রচুর ব্যবহৃত হয় যা পরোক্ষভাবে কিছু স্মৃতি সঞ্চয় করে memory
স্ট্যাটিক ব্লকের কারণে ক্লাস মেমরিতে লোড হয়ে যাওয়ার পরে ক্যাশে প্রথম ব্যবহারের মাধ্যমে শুরু করা হয়। ক্যাশের সর্বাধিক পরিসরটি -XX:AutoBoxCacheMax
জেভিএম বিকল্প দ্বারা নিয়ন্ত্রণ করা যায় ।
পূর্ণসংখ্যা অবজেক্টের জন্য শুধুমাত্র Integer.IntegerCache আমরা তাদের মতই এই ক্যাশে আচরণ প্রযোজ্য নয় ByteCache, ShortCache, LongCache, CharacterCache
জন্য Byte, Short, Long, Character
যথাক্রমে।
আপনি আমার নিবন্ধ জাভা ইন্টিজার ক্যাশে আরও পড়তে পারেন - কেন পূর্ণসংখ্যা.ভালিউওফ (127) == পূর্ণসংখ্যা.ভালিউঅফ (127) সত্য ।