Java:返回一个类User,与更改它相同吗?

标签 java class return

如果这个问题很愚蠢,我很抱歉,我是 Java 编程的初学者...... 我需要知道通过使用逐个类的方法更改类的值,直到它到达那里并更改值(1),是否与返回该类并更改 main(2)上的值相同?就像 if on (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)它是否实际上返回用户或创建一个指向用户内存的“指针”。感谢您的耐心等待!

最佳答案

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

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

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

请记住,对象是对内存中某个位置的引用。您的数组保存对象引用。当您返回此数组对象的索引时,您将返回引用对象在内存中的位置。结果,该对象发生了变化。但是,当您调用 list[0] 时,您将访问索引 0,从而在内存中提供相同的对象。因此,最终效果是相同的。

关于Java:返回一个类User,与更改它相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958152/

相关文章:

java - 如何将HashMap保存到文件并加载它

java - 从垫子上读取时像素颜色值错误

java - 将选定的单选按钮文本作为字符串获取

java - 如何在 Java 的实现类中的抽象类中实现抽象类?

c++ - 嵌套名称说明符中的类型名称不完整

PHP 是否可以识别包含对象的变量的名称?

python - 如何使用子进程从函数返回变量?

c - 不满足条件而执行的功能条件

java - 我应该如何将此对象添加到数组中...?

jquery - 如何使用 jQuery 每个函数返回一个变量