Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当您在java中声明整数i=9时,是否由于自动装箱而将i视为基元类型?_Java_Primitive Types_Autoboxing - Fatal编程技术网

当您在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
不是一个类型,而是一个变量