Basics:
1. Int is a basic data type of java, and integer is a type of int Encapsulation class.
2. Integer variables must be instantiated before they can be used, but int variables do not.
3. Integer is actually a reference to an object. When new an integer object, a pointer is actually generated pointing to the object; while int directly stores data values.
4. The default value of Integer is null, and the default value of int is 0.
Extension:
1. Because the integer variable is actually a reference to the integer object, the two integer variables passed through new will never be equal (because the integer variable generated by new are two objects with different memory addresses).
Integer i = new Integer(100); Integer j = new Integer(100); System.out.print(i == j);//false
2. When an integer variable is compared with an int variable, as long as the values of the two variables are equal, the result is true, because integer is essentially a wrapper class of int. When two numbers are compared, java The integer will be automatically unpacked, so it is essentially a comparison of two int variables.
Integer i = new Integer(100); int j = 100; System.out.print(i == j);//true
3. When an Integer variable created by new is compared with an Integer variable not created by new, the result is false. Because variables created without new exist in the Java constant pool, and variables created with new point to newly created objects in the heap, the memory addresses of the two are different.
Integer i = new Integer(100); Integer j = 100; System.out.print(i == j);//false
4. When comparing two non-new Integer variables, if the values of the two variables are between -128 and 127, then the result is true, otherwise it is false.
For this strange result, java's explanation is as follows:
Integer i = new Integer(100);//在编译时会变成Integer i = Integer.ValueOf(100)
And the definition of Integer.valueOf() in the java API is as follows:
public static Integer valueOf(int i){ assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high){ return IntegerCache.cache[i + (-IntegerCache.low)]; } return new Integer(i); }
That is, for Java will cache the number between -128~127, and the next time you assign a value to an Integer variable, if it is between -128~127 and has been cached, it will be called directly from the cache.
PHP Chinese website has a large number of free JAVA introductory tutorials, everyone is welcome to learn!
The above is the detailed content of What are the differences between java integer and int?. For more information, please follow other related articles on the PHP Chinese website!