Java:返回一个类用户,和更改它一样吗?

Java:返回一个类用户,和更改它一样吗?,java,class,return,Java,Class,Return,如果这个问题很愚蠢,我很抱歉,我是Java编程的初学者。。。 我需要知道,使用方法更改类的值是否与返回该类并更改main(2)上的值相同,方法是逐类进行更改,直到它到达并更改值(1)?就像在(2)上,它创建了某种指针 public class User{ //methods and constructor... String name = ""; public String getName(){return name;} publi

如果这个问题很愚蠢,我很抱歉,我是Java编程的初学者。。。 我需要知道,使用方法更改类的值是否与返回该类并更改main(2)上的值相同,方法是逐类进行更改,直到它到达并更改值(1)?就像在(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");

   }
}

我不明白on(2)是否实际返回用户或创建指向用户内存的“指针”。谢谢你的耐心

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

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

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


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

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

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

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

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

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

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

谢谢!自从我开始学习Java,我就一直在思考这个问题。我以前从学习C和英特尔汇编开始,Java看起来很抽象。。。但现在我明白了。非常感谢你!没问题!很高兴我能帮忙。谢谢!自从我开始学习Java,我就一直在思考这个问题。我以前从学习C和英特尔汇编开始,Java看起来很抽象。。。但现在我明白了。非常感谢你!没问题!很高兴我能帮忙。