用Java创建数组对象?

时间:2014-10-17 08:07:44

标签: java arrays

我对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方法中的数组检查,是否在这里创建了一个新对象?如果是的话,为什么不是括号和"新的操作员"用过的?这个问题导致了一个更普遍的问题:我知道数组属于类类型,它们现在是创建数组对象还是该数组类型的变量?

我真的需要一些帮助!

3 个答案:

答案 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个引用

答案 2 :(得分:0)

将“检查”分配给数组时,它不会创建新对象。它只存储数组中现有对象的引用。

如果我理解了您的第二个问题,那么当您使用Exam[] exams = new Exam[numberOfExams];之类的调用创建数组时,您将创建一个包含足够空间以便numberOfExams引用Exam个对象的对象。

顺便说一下,exams[numberOfExams] = exam;会给你一个ArrayIndexOutOfBoundsException,因为你的数组有numberOfExams个元素,所以有效索引从0到numberOfExams-1