问题描述
笔者在搭建基于SSM框架的web应用时,发现在java代码中很多元素都是用Integer定义的,但是笔者本人之前比较喜欢使用int来定义对象,但是不清楚这两种数据类型的区别。
区别
int
- java语言的一种基本数据类型。(整型)
- 定义成int的元素的使用方式就和基本元素的使用相同,正常进行加减乘除
- 默认值为0
- 两个int元素可以相等
int a=0;
int b=0;
boolean(a==b)结果为true
Integer
- int类型的包装类,不能算是基本数据类型。
- 使用Integer类型需要像使用一个java的类一样,进行实例化才能使用。
Integer a=new Integer(2);
- 默认值为null
- 两个Integer元素绝不相等,因为java类中实例化的对象指向的都是两个不同的内存地址。
Integer a=new Integer(0);
Integer b=new Integer(0);
boolean(a==b)结果为false
- integer对象有两种生成方式,一种是new生成,一种是非new生成。将他们进行比较,值不相等
Integer a=new Integer(2);
Integer b=2;
boolean(a==b)结果为false
- 两个同为非new的Integer类型元素进行比较时,如果元素值相等且在-128~127之间,则结果为true,否则为false
Integer a=2;
Integer b=2;
boolean(a==b)结果为true
Integer a=128;
Integer b=128;
boolean(a==b)结果为false
联系
当将一个int类型元素和一个Integer类型元素相比较时,java会将Integer类型元素自动拆包成int,这样就变成了两个int类型的元素的比较。只要是Integer元素对象和int元素相等,两个元素即相等。
int a=0;
Integer b=new Integer(0);
boolean(a==b)结果为true.