我对这三个代码感到困惑
int a = 5;
int b = 6;
int c = 5;
和
Integer x = new Integer(5);
Integer y = new Integer(6);
Integer z = new Integer(5);
和
Integer i = 5;
Integer j = 6;
Integer k = 5;
我知道第一个是一些包含值的变量,第二个是一些引用一些不同对象的变量,但是第三个是什么?我知道它们是引用数据类型。
但我不明白为什么创建了多少对象......如果有的话!
最佳答案
Integer
是一个(包装器)类名,因此该类型的变量是对象。当x
被赋予new Integer(5)
的值时,从道德上讲,你不能直接使用x进行数学运算。要在操作中使用 x,您必须使用包装类方法 intValue()
从对象形式获取数字(原始)形式的 x 值。
例如:
Integer x = new Integer(5);
int my_x = x.intValue();
int y = 10 + my_x; //y = 15
但是,在数学运算中直接使用 x 不会产生错误,事实上,会产生与执行上述步骤相同的输出。这是因为 JVM 会隐式将对象转换为原始数据值,这个过程称为自动装箱。当隐式完成时,逆过程称为拆箱。因此,在上面的例子中,你也可以这样做:
Integer x = new Integer(5);
int y = 10 + x; //y = 15;
希望你现在明白了。
关于Java对象和原始类型变量混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511977/