如何返回数组的副本?

Fri*_*lin 4 java arrays return training-data

 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++;

 }
Run Code Online (Sandbox Code Playgroud)
public String[] getStudents() {
    String[] copyStudents = new String[students.length];

    return copyStudents;

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试让方法getStudents返回我在addStudent方法中创建的数组的副本.我不知道该如何解决这个问题.

Fed*_*kov 9

1)Arrays.copyOf

public String[] getStudents() {
   return Arrays.copyOf(students, students.length);;
}
Run Code Online (Sandbox Code Playgroud)

2 System.arraycopy

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

3 克隆

public String[] getStudents() {
   return students.clone();
}
Run Code Online (Sandbox Code Playgroud)

另请参阅有关每种方法的性能的答案.它们非常相似