?????????????
????????????????????????????????н?????????????????????????????????????????????????????
????Integer sum = 0;
????for(int i=1000; i<5000; i++){
????sum+=i;
????}
????????????sum+=i???????sum = sum + i??????+?????????????????Integer????????sum?????????????????????????????????????????????????Integer??????????仯????
????sum = sum.intValue() + i;
????Integer sum = new Integer(result);
??????????????????????sum?Integer????????????????л???????4000???????Integer??????????????????У??????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????
????????????????????????????????Щ???????????????????Щ??????1.5????value(int)??value(Integer)???????????????????????????????????int????Integer??????????????????????????????????????????????????????е??????????????????ArrayList??remove??????????remove(index)??remove(Object)??????????????????????СС?????????????????????????????????????????????????????????????????????????????????????????
????public void test(int num){
????System.out.println("method with primitive argument");
????}
????public void test(Integer num){
????System.out.println("method with wrapper argument");
????}
????//calling overloaded method
????AutoboxingTest autoTest = new AutoboxingTest();
????int value = 3;
????autoTest.test(value); //no autoboxing
????Integer iValue = value;
????autoTest.test(iValue); //no autoboxing
????Output:
????method with primitive argument
????method with wrapper argument
?????????????
???????????????????????ü??????????????Щ????????????μ????????????????????????
?????????????
??????????????????????????”==“??????????????б?????????????????б??????????????????????????????????????????????????????????????????????????????????????????????ж??????????????”==“?????????????????equals??????????????????????????
public class AutoboxingTest {
public static void main(String args[]) {
// Example 1: == comparison pure primitive – no autoboxing
int i1 = 1;
int i2 = 1;
System.out.println("i1==i2 : " + (i1 == i2)); // true
// Example 2: equality operator mixing object and primitive
Integer num1 = 1; // autoboxing
int num2 = 1;
System.out.println("num1 == num2 : " + (num1 == num2)); // true
// Example 3: special case - arises due to autoboxing in Java
Integer obj1 = 1; // autoboxing will call Integer.valueOf()
Integer obj2 = 1; // same call to Integer.valueOf() will return same
// cached Object
System.out.println("obj1 == obj2 : " + (obj1 == obj2)); // true
// Example 4: equality operator - pure object comparison
Integer one = new Integer(1); // no autoboxing
Integer anotherOne = new Integer(1);
System.out.println("one == anotherOne : " + (one == anotherOne)); // false
}
}
Output:
i1==i2 : true
num1 == num2 : true
obj1 == obj2 : true
one == anotherOne : false
??????????????????С????????????????????obj1??obj2??????????????????????????????????????????JVM????-128??127??Integer???????obj1??obj2??????????????????????”==“??????true??
???????????????????????
????????????????????????????????????????????????????????????????????????????????????б?????????????????н??г?????????Null????????????????obj.xxxValue???????NullPointerException????????????
????private static Integer count;
????//NullPointerException on unboxing
????if( count <= 0){
????System.out.println("Count is not started yet");
????}
????????????
???????????????????????????????????Java?У????-128??127??Integer??????л??棬???????μ?Integer??????????????????????Χ?????????д???????????????????????????????μ?Integer????
??????Java????????????????????????????????????????????????????
???????????????????GC???
???????????????????????????????????????????????????????У???????????м??????????????GC????????????????????????д??????????????????????????????????????
?????????????????????????????????????Google IO??Android????????????????
??????????????????????????????????????????????????????????????????????????????????????????