我知道之前可能已经提到过,但我找不到具体问题的具体答案。我已经尝试掌握Java对引用的处理,但这仍然困扰着我。请考虑以下事项:
public class Question
{
private boolean isCorrect;
public void setCorrect (boolean _isCorrect) {
isCorrect = _isCorrect;
}
}
现在,在另一个文件中,代码中的某个地方:
/**
* questionList is List<Question> questionList = new ArrayList<Question>();
* With various Question's added already with various isCorrect values.
*/
for (int i = 0; i < questionList.size(); i++) {
Question q = (Question) questionList.get(i);
q.setCorrect(true);
}
这会将isCorrect
中的每个问题的questionList
设置为 true 吗?我理解Java(我不认为我这样做)应该。但是吗?
谢谢
答案 0 :(得分:2)
是的,它会的。这是两个地方引用的相同对象。
答案 1 :(得分:0)
是。您应该从Java Tutorial中了解指针和引用。 List包含指向存储Question的内存中的插槽的指针。因此,对指针执行操作,您正在对内存中的sot采取操作
答案 2 :(得分:0)
是的,确实如此。理解这个
Question q = (Question) questionList.get(i);
q
只是Question
类型的引用,它引用get
返回的基础对象。不会隐式创建对象的副本。
答案 3 :(得分:0)
是的,因为变量q
指向内存列表中的对象。因此,您在q
上调用的任何方法都会在内存中的对象上调用。
答案 4 :(得分:-1)
它应该改为true,但为了速度,为什么不呢:
for(int loop = 0; i < questionList.size(); loop++){
questionList.get(loop).setCorrect(true);
}