当您在java中声明整数i=9时,是否由于自动装箱而将i视为基元类型?
在类中声明时:当您在java中声明整数i=9时,是否由于自动装箱而将i视为基元类型?,java,primitive-types,autoboxing,Java,Primitive Types,Autoboxing,在类中声明时: Integer i = 9; 由于自动装箱,它现在符合要求了,我相信,I被认为是原始数据类型吗?是的,它是自动装箱的,所以I将指向一个值为9的整数对象,而不是原始对象。否,I的类型仍然是Integer(引用类型)-毕竟它是这样声明的。它恰好是使用int初始化的,这一事实与变量的类型完全不同。文本9是int类型的值,但它被装箱为整数 该代码相当于: Integer i = Integer.valueOf(9); 不,它是(对)对象实例的引用。由于自动装箱,原语文本9被转换为整数
Integer i = 9;
由于自动装箱,它现在符合要求了,我相信,
I
被认为是原始数据类型吗?是的,它是自动装箱的,所以I
将指向一个值为9的整数对象,而不是原始对象。否,I
的类型仍然是Integer
(引用类型)-毕竟它是这样声明的。它恰好是使用int
初始化的,这一事实与变量的类型完全不同。文本9
是int
类型的值,但它被装箱为整数
该代码相当于:
Integer i = Integer.valueOf(9);
不,它是(对)对象实例的引用。由于自动装箱,原语文本9被转换为整数
实例,并由i
引用
请参阅Java语言规范(JLS)的一部分:
装箱转换将基元类型的表达式转换为引用类型的相应表达式。。。在运行时,装箱转换按如下方式进行:
如果p是int
类型的值,则装箱转换将p
转换为类和类型Integer
的引用r
,这样r.intValue()==p
要表明i
不是一个基本变量,只需将null
赋值给它,这对于基本变量是不可能的。不,i
的类型不被认为是基本的:它是java.lang.Integer
,一种包装类型,由编译器自动装箱
使其部分呈现原语的原因是Java使用小整数,因此您可以将它们作为原语进行比较:
Integer a = 9;
Integer b = 9;
if (a == b) { // This evaluates to true
...
}
通常,与==
的值相等比较保留给基元类型;您应该使用a.equals(b)
作为参考对象。但是,上面的表达式的计算结果也为true
,因为Java保留了一个小型整数
包装器的内部缓存。是原语类型int
的包装器类,但具有一些其他特性/方法,例如将同一整数转换为字符串。从中,您有:
Integer类将基元类型int的值包装在
对象Integer类型的对象包含一个字段,其类型为
是int。此外,该类还提供了用于
将整型转换为字符串、将字符串转换为整型以及其他
处理int时有用的常量和方法
这里是对Java的描述。否。它是一个对象。i
不是一个类型,而是一个变量