当前位置: 首页 > 知识库问答 >
问题:

我很难理解对象引用在Java中是如何工作的?

祝锐
2023-03-14

但是当我给另一个人指定了彼得的引用,然后改变了彼得的名字时,这个人不知道这一点,并打印了第一个名字。既然它存储了Peter的内存引用,这怎么可能呢?难道它不能跟随对它所做的更改吗?

public class Testing {

  public static void main(String[] args) {
    Man peter = new Man("brown", 182, 78000, "Peter");
    Man person = peter;
    peter = new Man("brown", 182, 78000, "Leonard");
    System.out.println(person.name);
  }
}

class Man {

   String hairColor;
   int height;
   double salary;
   String name;

   public Man()
   {
     hairColor = "brown";
     height = 180;
     salary = 50500.5;
     name = "John";
   }
   public Man(String hair, int high, double pay, String nam)
   {
        this.height = high;
        this.hairColor = hair;
        this.salary = pay;
        this.name = nam;
   }
}

共有1个答案

松涵容
2023-03-14

这里:

Man peter = new Man("brown", 182, 78000, "Peter");

创建一个名为“Peter”的Man对象。

Man person = peter;

创建另一个变量“指向”上面创建的对象。

peter = new Man("brown", 182, 78000, "Leonard");
 类似资料:
  • 我是JavaScript的新手,我认为对象是通过引用传递的。 我期望的输出是: 获得的输出: 当引用的地址时,为什么仍然 null null

  • 我有一个web应用程序,用户可以点击按钮来引擎对象。 我用Javascript编写了下面的方法,它工作了。但是,如果有2个或3个以上的用户在克隆,就会弹出随机错误。例如,它会说,或。 但如果只有一个人在做,它就永远不会有错误。 所以我在想,有没有更好的写法: 我尝试过这样做,但它生成空值: 所以我一定是做错了什么,我希望有人能给我指明正确的方向。 谢谢!

  • 考虑下面的代码: 对于上面的代码,输出是:

  • 这是关于类可以实现的比较契约。 除非您愿意放弃面向对象抽象的好处,否则无法在保留compareTo契约的同时使用新的值组件扩展可实例化类。同样的解决方法也适用。如果你想给实现Comparable的类添加一个值组件,不要扩展它;编写一个不相关的类,其中包含第一个类的实例。然后提供一个返回该实例的“视图”方法。这使您可以在第二个类上实现您喜欢的任何compareTo方法,同时允许其客户端在需要时将第二

  • 问题内容: 我正在浏览位于http://tour.golang.org/的golang教程,并在示例29中进行了一些实验。 供您参考,原始示例复制到此处: 这很基本,它显示了如何创建该新结构实例。 但是,示例28显示了如何通过指向它的指针来操纵顶点,因此我对示例进行了一些修改,并对输出感到惊讶。这是修改: 并输出: 使我感到惊讶的不是{4,2},这似乎意味着更改更改了所指向的结构的实例。来自C /

  • 问题内容: 我想从Java方法返回对Scala对象的引用。我怎样才能做到这一点? 我的Scala对象是这样的: …并且我希望我的Java方法像这样: 有没有办法做到这一点? 问题答案: 应该管用。 编辑:之所以可行,是因为这是Scala表示单例对象的方式。该类中有一个名为的字段,其中填充有该类的单个有效实例。但是还有一个叫做的类,它将所有方法复制为静态方法。这样一来,您就可以在大多数情况下像Jav