如果这个问题很愚蠢,我很抱歉,我是 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/