我对Java很新,并且对阵列有一点问题。在练习中,必须创建一个名为"考试"使用方法" addExam"。现在我试图解决问题,但只得到了cass,实例变量和方法标题的定义。其余的我在解决方案中查找它看起来像:
public class Exam{
private int numberOfExams=15;
private Exam[]exams = new Exam[numberOfExams];
public void addExam(Exam exam){
exams[numberOfExams] = exam;
numberOfExams++;
现在问我的问题:当我分配"考试"到addExam方法中的数组检查,是否在这里创建了一个新对象?如果是的话,为什么不是括号和"新的操作员"用过的?这个问题导致了一个更普遍的问题:我知道数组属于类类型,它们现在是创建数组对象还是该数组类型的变量?
我真的需要一些帮助!
答案 0 :(得分:3)
public void addExam(Exam exam){
exams[numberOfExams] = exam;
没有。没有创建新对象,这里传递的对象分配给数组的第0个元素。
创建新对象的实际位置是调用addExam方法的位置。像
这样的东西Exam exam = new Exam();
// do something
addExam(exam);
答案 1 :(得分:1)
当我在方法addExam中为数组考试分配“考试”时,是否在此处创建了一个新对象?
否即可。对现有Exam
实例的引用将添加到数组中。因此,您将对Exam
答案 2 :(得分:0)
将“检查”分配给数组时,它不会创建新对象。它只存储数组中现有对象的引用。
如果我理解了您的第二个问题,那么当您使用Exam[] exams = new Exam[numberOfExams];
之类的调用创建数组时,您将创建一个包含足够空间以便numberOfExams
引用Exam
个对象的对象。
顺便说一下,exams[numberOfExams] = exam;
会给你一个ArrayIndexOutOfBoundsException
,因为你的数组有numberOfExams
个元素,所以有效索引从0到numberOfExams-1
。