java - 了解对象变量赋值行为

标签 java

我在 Java 中遇到了一些奇怪的问题。我在调试时已经解决了整个问题。它发生在这两行:

q=p;
q.addPair(2,3);

注释:p,q 是我定义的一个新类。在这个类中,它有一个 public function addPari(int, int) .

这是我所期望的:copy pq ,然后更改 q使用q.addPair() ,但离开p和以前一样。

我认为这可行,但不知何故,事实证明 q.addPair(2,3)将同时更改 pq 。有人可以帮我解决这个问题吗?

最佳答案

q=p;

实际上并不复制。这意味着修改 q 也会修改 p,因为它们是同一个实例。

如果你想让q成为一个新对象,你需要使用new:

q = new MyObject(p);

换句话说,您正在使用 copy constructor创建 p 的新副本。如果您的类没有复制构造函数,您需要创建一个:它需要能够从现有对象创建一个新对象。它可以通过从给定实例 p 复制适当的值来完成此操作。

关于java - 了解对象变量赋值行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249945/

相关文章:

java - xml 布局不适合我

java - 如何停止使用 prepare() 和 startService() 调用的 VpnService?

java - 如何通过 JACOB 库更改 Visio 中的 Activity 页面

java - Spring Boot Security hasRole 被忽略

java - 尝试通过URL访问tomcat中的xml文件,出现404错误

Java可序列化

java - getter 和 setter 应该同步吗?

java - ImageIcon 不显示在左上角的应用程序窗口中

java - 使用 PrintWriter 时已为此响应调用 getOutputStream()

java - 单例模式