Java 包装器类型真的是引用类型吗
看看这个代码Java 包装器类型真的是引用类型吗,java,oop,Java,Oop,看看这个代码 Integer x=new Integer(55); Integer y=x; y=33; System.out.println(x);//x still prints 55 instead of 33 为什么x打印55 我认为x应该打印33,因为它是引用类型。这可能很愚蠢,但我对java 为什么x打印55 因为它是一种引用类型。这一行: y=33; 这实际上是一种简写: y = Integer.valueOf(33); i、 e.创建了一个新对象,*并且y现在引用该
Integer x=new Integer(55);
Integer y=x;
y=33;
System.out.println(x);//x still prints 55 instead of 33
为什么x
打印55
我认为x
应该打印33
,因为它是引用类型。这可能很愚蠢,但我对java
为什么x
打印55
因为它是一种引用类型。这一行:
y=33;
这实际上是一种简写:
y = Integer.valueOf(33);
i、 e.创建了一个新对象,*并且y
现在引用该对象。原始对象未更改,x
未更改
*说得迂腐一点,这不一定是真的。但它肯定会与原始对象不同 为什么
x
打印55
因为它是一种引用类型。这一行:
y=33;
这实际上是一种简写:
y = Integer.valueOf(33);
i、 e.创建了一个新对象,*并且y
现在引用该对象。原始对象未更改,x
未更改
*说得迂腐一点,这不一定是真的。但它肯定会与原始对象不同 意味着
y=new Integer(33);
这是通过自动装箱为您完成的
因此,x不会改变,您只需将一个新的引用分配给y
意味着
y=new Integer(33);
这是通过自动装箱为您完成的
因此x不会改变,只需将一个新的引用分配给
y
行y=33创建一个值为33的新整数。x仍然引用值为55的原始整数。行y=33创建值为33的新整数。x仍然引用值为55的原始整数。在y=x
之后,x
和y
都引用包含值55的同一整数对象
但这句话:
y = 33;
做两件事:它自动创建一个整数对象(自动装箱),该对象的值为33,并使变量y
指向该新对象。此时,变量x
仍指向原始整数(55)
注意:这与基本体无关:
StringBuilder x = new StringBuilder("abc");
StringBuilder y = x; //y's value is "abc"
y = new StringBuilder("def"); //y's new value is "def", but x's value still is "abc"
在
y=x
之后,x
和y
都指向包含值55的同一整数对象
但这句话:
y = 33;
做两件事:它自动创建一个整数对象(自动装箱),该对象的值为33,并使变量y
指向该新对象。此时,变量x
仍指向原始整数(55)
注意:这与基本体无关:
StringBuilder x = new StringBuilder("abc");
StringBuilder y = x; //y's value is "abc"
y = new StringBuilder("def"); //y's new value is "def", but x's value still is "abc"
String
是类类型..isx
正在获取自动装箱again@Some1.Kill.The.DJ没有自动装箱,但这确实是一个特殊的例子。我用标准对象进行了编辑。String
是一种类类型。x
正在自动装箱吗again@Some1.Kill.The.DJ没有自动装箱,但这确实是一个特殊的例子。我用一个标准对象进行了编辑。所有“对象”都是真正的引用类型,它们不是您所建议的引用。所有“对象”都是真正的引用类型,它们不是您所建议的引用。