这个问题在这里已经有答案了:
java是“按引用传递”还是“按值传递”(88个答案)
三小时前关门了。
我很困惑 ArrayList
另一个变量可以更改另一个类的值。我有两门课和两个例子 ArrayList
以及 Object
变量。有人能帮我理解为什么它不同,如果有一个解决办法,使它具有相同的效果?
这是arraylist的代码:
import java.util.List;
public class Test {
private String name = "Fifi";
void fill(List<Test> a) {
a.add(this);
}
}
import java.util.ArrayList;
import java.util.List;
public class B {
private List<Test> a = new ArrayList<Test>();
//a variable is empty
public B() {
// TODO Auto-generated constructor stub
Test oa = new Test();
oa.fill(a);// After this method is called, a variable has change with name is "FiFi"
}
public static void main(String[] args) {
new B();
}
}
然后,我得到了和object变量相同的形式,但是结果不一样。
public class Test {
private String name = "Fifi";
void fill(Test b) {
b = this;
}
}
public class B {
private Test a;
// so a variable is null
public B() {
// TODO Auto-generated constructor stub
Test oa = new Test();
oa.fill(a);// after fill method is called, a still null!
}
public static void main(String[] args) {
new B();
}
}
与上面的arraylist和object变量有什么不同?我不明白这是怎么发生的!
1条答案
按热度按时间iqjalb3h1#
ArrayList
以及Object
是两个完全不同的概念。阵列对象oa.填充(a);//调用fill方法后,仍然为空!
a
为空,因为私人测试a;
不是对象而是
Test
班级。所以没有内存分配给a
. 声明和示例化的区别两种代码之间的区别:
此代码正在附加对象(
oa
)的Test
要列出的类a
-在这段代码中,你分配了一个对象的内容(
oa
)到另一个对象(a
)同级的Test
-