标题问题有点棘手,所以这是我的问题:
1- 我创建了一个 arraylist 的对象 y 并将其指定为一个引用变量,到目前为止一切顺利。
ArrayList<String> y = new ArrayList<String>();
2- 这里我向数组添加了一个元素:
y.add("Hello"); y.add("GoodBye");
现在这是我不明白的部分,现在当我创建一个返回字符串的方法时:
public String stringful(ArrayList<String> list)
现在,当我尝试获取数组的 size() 时,我使用 list.size() 但为什么呢? y 不是原始对象吗,我应该使用 y.size() 尽管它不起作用,所以这就是我来这里的原因。谢谢
最佳答案
使用这个方法头:
public String stringful(ArrayList<String> list)
您声明此方法将使用类型为 ArrayList<String>
的对象称为 list
.因为你声明y
在本地,另一种方法甚至不知道存在。引用y
来自该方法的代码将无法编译,当然假设它是一个局部变量。
Java 中的指针
当您创建一个新对象时,您使用指向该对象的指针。例如,当您声明:
ArrayList<String> y;
您正在创建一个指针。添加代码时:
ArrayList<String> y = new ArrayList<String>();
这会将指针指向一个新的 ArrayList<String>
对象进入 y
多变的。所以当你通过 y
作为方法的参数,您将传递一个指向对象的指针 y
也指向,不是对象本身。这就是为什么您的代码适用于 list.size()
.它所做的就是获取 size
完全相同对象的值,只是指针不同。
总结
总而言之,它实际上是同一个对象。只是不同的指针,看着那个对象。
关于Java - ArrayList 和创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403992/