日期:2014-05-20  浏览次数:20759 次

代码中红色标定部分有什么区别?
Java code

public class Course {
    private String name;
    [u]private String[] students = new String[100]; //在这里创建[/u]
    private int numberOfStudents;
    
    public Course(String name) {
        this.name = name;
          [u]  //students = new String[100]; // 或者在这里创建[/u]
    }
    public String getName() {
        return name;
    }
    
    public void addStudent(String student) {
        students[numberOfStudents] = student;
        numberOfStudents++;
    }
    
    public String[] getStudents() {
        return students;
    }
    
    public int getNumberOfStudents() {
        return numberOfStudents;
    }
}


引用数组在类属性声明的时候创建,或者在构造函数里声明有什么区别?执行结果都是正确的

------解决方案--------------------
探讨
Java code

public class Course {
private String name;
private String[] students = new String[100]; //在这里创建
private int numberOfStudents;

public Course(String name) {
……

------解决方案--------------------
执行顺序不同而已,某些时候你需要对属性做一些函数初始化的话,第一种写法就会显得更方便,比如:
private String[] students = new String[100];
private final int xxoo = func(students);


有时候你依赖于构造参数来工作,那么就必须用第二种写法:
public Course(int num) {
students = new String[num]; // 你依赖了构造参数
}


绝大多数情况下,确实没太大区别。