不多说,直接上干货!
https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=5
Java语言支持的8种基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。
Java支持的数据类型包括两种:一种是基本数据类型,包含byte,char,short, boolean ,int , long, float,double;另一种是引用类型:如String等,其实是对象的引用,JVM中虚拟栈中存的是对象的地址,创建的对象实质在堆中,通过地址来找到堆中的对象的过程,即为引用类型。
自动装箱就是Java编译器在基本数据类型和对应的对象包装类型间的转化,即int转化为Integer。
自动拆箱是Integer调用其方法将其转化为int的过程。
题目链接
https://www.nowcoder.com/profile/4002626/myFollowings/detail/3200810
1、Integer有三种创建方式:
Integer i1 = 59;
Integer i2 = Integer.valueOf(59);
Integer i3 = new Integer(59);
2、如果一个Integer类型的数和int类型的数相比(==),那么,由于会自动拆箱,Integer会拆箱为int型,所以,只要数值相等,则这个Integer就和int型的数字相等,不管这个Integer是以何种方式创建的。
package Test; public class IntegerTest { public static void main(String[] args) { Integer i1 = 59; Integer i2 = Integer.valueOf(59); Integer i3 = new Integer(59); int i4 = 59; //只要是和int类型的比较,不管Integer如何创建,只要满足数值相等,就为true,因为会自动拆箱 System.out.println(i1==i4);//true System.out.println(i2==i4);//true System.out.println(i3==i4);//true //只要是new Integer,并且比较的不是int型,那么,一定不相等 System.out.println(i2==i3);//false System.out.println(i1==i3); //false //如果涉及到Integer.valueOf这个方法,那么,只要记住, // 如果 Integer i1 = 59,这个值在-128到127范围内,则true // 否则,false System.out.println(i1==i2); //true Integer i7 = 129; Integer i8 = Integer.valueOf(129); System.out.println(i7==i8);//false } }