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

dukangweiwang 2012-08-07 10:51:53

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

public Course(String name) {
this.name = name;
//students = new String[100]; // 或者在这里创建
}
public String getName() {
return name;
}

public void addStudent(String student) {
students[numberOfStudents] = student;
numberOfStudents++;
}

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

public int getNumberOfStudents() {
return numberOfStudents;
}
}

引用数组在类属性声明的时候创建,或者在构造函数里声明有什么区别?执行结果都是正确的
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dukangweiwang 2012-10-02
  • 打赏
  • 举报
回复
谢谢了
dukangweiwang 2012-08-08
  • 打赏
  • 举报
回复

// 第一种方法
public class Course {
...
private String[] students = new String[100]; //在这里声明并创建

public Course(String name) {
this.name = name;
}
...
}

// 第二种方法
public class Course {
...
private String[] students; //只声明引用变量,未创建

public Course(String name) {
this.name = name;
students = new String[100]; // 在这里创建
}
...
}

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


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


绝大多数情况下,确实没太大区别。
FFF9527 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
Java code

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

public Course(String name) {
……
[/Quote]

没太大区别,构造外面的创建优先于构造里面的创建而已。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧