- valueOf - র্যাপার ক্লাসে রূপান্তরিত হয়
- parseInt - আদিম ধরণের রূপান্তর করে
Integer.parseInt কেবল স্ট্রিং গ্রহণ করুন এবং আদিম পূর্ণসংখ্যার প্রকার (ইনট) প্রদান করুন।
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
Iteger.valueO যদি int এবং স্ট্রিং গ্রহণ করে। মান যদি স্ট্রিং হয় তবে মানটি যদি এটিকে পার্সেন্ট ব্যবহার করে সরল আইটে রূপান্তর করে এবং ইনপুট -128 এর চেয়ে কম বা 127 এর চেয়ে বেশি হয় তবে নতুন পূর্ণসংখ্যা ফেরত দেয় input যদি ইনপুটটি পরিসীমা থাকে (-128 - 127) এটি সর্বদা একটি থেকে পূর্ণসংখ্যার বস্তু ফেরত দেয় অভ্যন্তরীণ পূর্ণসংখ্যা পূর্ণসংখ্যা শ্রেণি একটি অভ্যন্তরীণ স্থিতিশীল ইন্টিজার ক্যাশে বর্গ বজায় রাখে যা ক্যাশে হিসাবে কাজ করে এবং -128 থেকে 127 পর্যন্ত পূর্ণসংখ্যার অবজেক্টগুলিকে ধারণ করে এবং এজন্য যখন আমরা 127 (উদাহরণস্বরূপ) এর জন্য পূর্ণসংখ্যার বস্তু পাওয়ার চেষ্টা করি আমরা সর্বদা একই বস্তুটি পাই।
Iteger.valueOf(200)
200 থেকে নতুন পূর্ণসংখ্যা দেবে It's এটির new Integer(200)
Iteger.valueOf(127)
মতোই Integer = 127
;
আপনি যদি স্ট্রিংকে পূর্ণসংখ্যার ব্যবহারে রূপান্তর করতে চান না Iteger.valueOf
।
আপনি যদি স্ট্রিংকে সাধারণ ইনট ব্যবহারে রূপান্তর করতে চান না Integer.parseInt
। এটি দ্রুত কাজ করে।
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
try {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
} catch( NumberFormatException nfe) {
// If the property cannot be parsed into an int, ignore it.
}
}
high = h;
cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127;
}
private IntegerCache() {}
}
এবং তুলনা করে পূর্ণসংখ্যা.ভালিউওফ (127) == পূর্ণসংখ্যা.ভালিউঅফ (127) সত্য প্রত্যাবর্তন
Integer a = 127; // Compiler converts this line to Integer a = Integer.valueOf(127);
Integer b = 127; // Compiler converts this line to Integer b = Integer.valueOf(127);
a == b; // return true
কারণ এটি ক্যাশে থেকে একই রেফারেন্স সহ পূর্ণসংখ্যার অবজেক্টগুলিকে গ্রহণ করে।
তবে Integer.valueOf (128) == Integer.valueOf (128) মিথ্যা, কারণ 128 ইন্টিজার ক্যাশে সীমার বাইরে এবং এটি নতুন পূর্ণসংখ্যা ফেরত দেয়, সুতরাং অবজেক্টের বিভিন্ন রেফারেন্স থাকবে।