Java int 和Integer的区别有:1、定义不同;2、使用方式不同;3、引用方式不同;4、默认值不同。Integer是int的包装类,int则是java的一种基本数据类型。由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的。
1、定义不同
Integer是int的包装类,int则是java的一种基本数据类型。由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。new两个相同value的integer变量进行比较,会发现返回结果为false,这是因为new生成的两个integer指向不同的地址,而引用数据类型比较时实际是比较地址是否相同。
2、使用方式不同
Integer变量必须实例化后才能使用,而int变量不需要。非 new 生成的 Integer 变量与 new Integer() 生成的变量比较,结果为 false,这是因为非 new 生成的 Integer 变量指向的是 java 常量池中的对象,而 new Integer() 生成的变量指向堆中新建的对象,两者在内存中的地址不同。所以输出为 false。
3、引用方式不同
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。.Integer 变量(无论是否是 new 生成的)与 int 变量比较,只要两个变量的值是相等的,结果都为 true。这涉及到一个叫做自动拆箱的过程,就是将包装类自动转换成对应的基本数据类型,(与此相反的自动装箱就是将基本数据类型自动转换成对应的包装类,以后也会见到),此时就是两个数值的比较,结果必定为true。
4、默认值不同
Integer的默认值是null,int的默认值是0。对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false
延伸阅读:
什么是Integer?
integer,整数 / 整型数,与小数 / 浮点数相对,是编程语言的基本数据类型之一,用以指示变量的数据类型,有时也用于常量(变量、表达式)的强制数据类型转换。整型数据的长度及其取值范围并不固定,受编译环境影响。在不同的编程语言中做此类型声明时,具体实现方式也可能会有所区别。
Integer 一个整型数据用来存储整数,整数包括正整数,负整数和零。整型常量采用十进制整数表示。如 1991,0,-123等等都是整型常量。而52.0或131.4都不是整型常量。Integer 变量存储为最接近编译环境的长度,例如在32位的编译环境下,Integer为32位,其范围为 -2^15 到 2^15-1 之间。
VB中也可以用 Integer 变量来表示枚举值。枚举值可包含一个有限集合,该集合包含的元素都是少数的整数,每一个整数都在它使用时的上下文当中有其特殊意义。枚举值为在已知数量的选项中做出选择提供了一种方便的方法,例如,black = 0,white = 1 等等。较好的编程作法是使用 Const 语句将每个枚举值定义成常数。
文章标题:Java int 和Integer有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37786