1

如果问题很愚蠢,我很抱歉,我是 Java 编程的初学者......我需要知道是否通过使用逐个类的方法来更改类的值,直到它到达那里并更改值(1),与返回该类并更改 main (2) 上的值相同吗?就像如果在(2)上它会创建某种指针......

    public class User{
       //methods and constructor...
       String name = "";
       public String getName(){return name;}
       public void setName(String name){this.name = name;}
    }

    public class UserList{
       //...
       User [] list = new User();
       //some User's inside list...
       public void setName(String name){
          list[0].setName(name);
       }
       public User getUser(){
          return list[0];
       }
    }

public class Main{
   public static void main(String[] args){
      UserList ul = new UserList();
      //is this (1):
      ul.setName("randomname");
      // the same as this (2):
      ul.getUser().setName("randomname");

   }
}

我不明白 (2) 是否实际上返回用户或创建指向用户内存的“指针”。感谢您的耐心等待!

4

2 回答 2

1

是的,它们是等价的。这两个函数调用指向内存中的同一个列表。

由于一个人访问list[0]并将其设置为所需的名称,因此索引 0 oflist将设置为所需的名称。

另一个获取列表,然后获取索引 0 并将其设置为所需的名称。整体效果是一样的。

请记住,对象是对内存中某个位置的引用。您的数组包含对象引用。当您返回此数组对象的索引时,您将返回被引用对象在内存中的位置。结果,该对象被更改。但是,当您调用 时list[0],您正在访问索引 0,从而在内存中为您提供相同的对象。因此,净效应是相同的。

于 2013-04-11T20:22:25.507 回答
0

完全相同的!!您总是通过直接设置其实例变量名称或通过返回对象然后修改实例变量来引用相同的对象列表[0]。

于 2013-04-11T20:32:07.897 回答