问题描述
笔者在搭建基于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.



