4
 public void addStudent(String student) {
    String [] temp = new String[students.length * 2];
    for(int i = 0; i < students.length; i++){
    temp[i] = students[i];
        }
    students = temp;
    students[numberOfStudents] = student;
    numberOfStudents++;

 }

public String[] getStudents() {
    String[] copyStudents = new String[students.length];

    return copyStudents;

}

我试图让 getStudents 方法返回我在 addStudent 方法中创建的数组的副本。我不知道该怎么做。

4

7 回答 7

12

1) Arrays.copyOf

public String[] getStudents() {
   return Arrays.copyOf(students, students.length);;
}

2 System.arraycopy

public String[] getStudents() {
   String[] copyStudents = new String[students.length];
   System.arraycopy(students, 0, copyStudents, 0, students.length); 
   return copyStudents;
}

3克隆

public String[] getStudents() {
   return students.clone();
}

另请参阅有关每种方法的性能的答案。他们几乎一样

于 2014-02-11T07:10:16.353 回答
1
System.arraycopy(students, 0, copyStudents, 0, students.length); 
于 2014-02-11T07:09:27.330 回答
1

尝试这个:

System.arraycopy(students, 0, copyStudents, 0, students.length);
于 2014-02-11T07:10:50.873 回答
1

Java 的System类为此提供了一个实用方法:

public String[] getStudents() {
    String[] copyStudents = new String[students.length];
    System.arraycopy(students, 0, copyStudents, 0, students.length );

    return copyStudents;
}
于 2014-02-11T07:10:53.570 回答
0
System.arraycopy(Object source, int startPosition, Object destination, int startPosition, int length);

docu中的更多信息,当然,在 SO 上已被问过万亿次,例如这里

于 2014-02-11T07:11:25.090 回答
0

您可以使用Arrays.copyOf()创建数组的副本。

或者

您也可以使用System.arraycopy()

于 2014-02-11T07:11:39.097 回答
0

您可以使用Arrays.copyOf()

例如:

int[] arr=new int[]{1,4,5}; 
Arrays.copyOf(arr,arr.length); // here first argument is current array
                               // second argument is size of new array.
于 2014-02-11T07:12:06.017 回答