java - 指向另一个对象引用的 Java 对象引用
问题描述
这个类ds
有两个字段,x 和 y
public class ds
{
private int x;
private int y;
public ds(int xx, int yy)
{
x = xx;
y = yy;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void setX(int xx)
{
x = xx;
}
public void setY(int yy)
{
y = yy;
}
}
此类ptrs
用于ds
打印结果。我注意到打印输出是相同的,无论int
是否Integer
用于ds
.
public class ptrs
{
public static void main(String[] args)
{
ds d = new ds(1,2);
System.out.println("d.x:" + d.getX()); //1
System.out.println("d.y:" + d.getY()); //2
//t is an object reference (a pointer) which points to d, which in turn
points to the ds object
ds t = d;
System.out.println("t.x:" + t.getX()); //1
System.out.println("t.y:" + t.getY()); //2
t.setX(3);
t.setY(4);
System.out.println("");
System.out.println("t.x:" + t.getX()); //3
System.out.println("t.x:" + t.getY()); //4
System.out.println("d.x:" + d.getX()); //3
System.out.println("d.y:" + d.getY()); //4
d.setX(5);
d.setY(6);
System.out.println("");
System.out.println("d.x:" + d.getX()); //5
System.out.println("d.x:" + d.getY()); //6
System.out.println("t.x:" + t.getX()); //5
System.out.println("t.x:" + t.getY()); //6
}
}
d
当我在or上调用 set 方法时t
,在任一指针上调用 get 方法都会导致更新值。为什么在下一个示例中有明显不同的行为?
public class main
{
public static void main(String[] args)
{
Integer i = new Integer(5);
Integer a = i;
System.out.println("i is " + i ); //5
System.out.println("a is " + a ); //5
i = new Integer(10);
System.out.println("i is " + i ); //10
System.out.println("a is " + a ); //5
}
}
如果我将一个 Integer 对象引用设置i
为指向一个值为 5 的 Integer 对象,然后再进行另一个引用a
来引用i
,为什么a
即使我i
引用另一个值为 10 的 Integer 对象后仍然指向 5?
区别是因为在第一个示例中我更改了同一对象的字段,但在第二个示例中我指向一个新对象?但是,如果这就是原因,那为什么会引起差异……?
解决方案
推荐阅读
- ios - Alamofire multipart 仅上传一张图片 ios
- azure-keyvault - 从部署在 VNET 中的 Azure 容器实例访问 KeyVault
- r - R中三点之间的插值
- scala - ReactiveMongo 使用 MongoConnectionOptions 连接
- regex - 具有多个过滤器的正则表达式
- azure - 使用 Azure API 管理的异步 IP 受限逻辑应用在调用重试 url 时出现授权错误
- kotlin - Sequence 实际上比 Iterable 更通用,还是更通用?
- android - 由于 Linux 权限错误,Android 设备模拟器失败
- docker - 在带有参数的 docker 容器中运行“apk add”命令
- python-3.x - 根据python pandas中其他列的计算平均值更改列值