java中可以定义以类为类型的数组吗?

aheadyes 2004-10-11 11:14:46
class student
{
int number;
String classname;
String name;
String sex;
int age;
student(int number,String classname)
{
this.number = number;
this.classname = classname;
}
student(String name,int age,String sex)
{
this.name = name;
this.age = age;
this.sex = sex;
}

}

class operation
{
void setname(student a,String name)
{
a.name = name;
}

}
public class text{
public static void main(String args[])
{
student a = new student("mysword",22,"boy");
student b = new student("plainsong",28,"boy");
operation set = new operation();
set.setname(a,"dengsfa");
set.setname(b,"zzwu");
System.out.println(a.name + ' '+ a.age + ' ' + a.sex);
System.out.println(b.name);

/*
operation set = new operation();
student a[10];
for(int i=0; i<10; i++)
a[i] = new student();
set.setname(a[0],"dengsfa");
System.out.println(a[0].name); */
}

}

初学java:
上面定义一个学生类:
一个学生有5个属性,显然如果在一个班级的话,有那么多的学生。
可以以学生类的为数组的类型吗? 类似我上面注释掉的语句。?
具体如何做呢? 我上面注释掉的有错!(但在c++中就可以)

...全文
5880 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
边城狂人 2004-10-12
  • 打赏
  • 举报
回复
首先,建议你看看 Java 的编码规则,类名应该定义成第一个字母大写,以后每个单词的首字母大字,其余字母小写。

你的 Class_1 是班级类,学生是这个班级的成员,所以你应该把学生定义为班级的成员。
我简单改了一下你的代码,也可以达到你的目的,这里 students 不再是 Class_1 外面的的一引变量,而是它的成员,需要使用的时候可以用 getStudents 来取得。


class Class_1 {

String classname;
//int NumOfStu;
Student[] students;

Class_1(String classname, int NumOfStu) {
this.classname = classname;
//this.NumOfStu = NumOfStu;
students = new Student[NumOfStu];

for (int i = 0; i < NumOfStu; i++) {
students[i] = new Student("name", 22, "boy");
}
}

Student[] getStudents() {
return students;
}

int getStudentsCount() {
return students.length;
}
}


其实你这个类还是有很多问题,比如:如果增加学生怎么办?如果开除学生怎么办?不过你这个类做来保存已经存在的学生还是可用的,但不太灵活。
aheadyes 2004-10-12
  • 打赏
  • 举报
回复
class Class_1
{
String classname;
int NumOfStu;
Class_1(String classname, int NumOfStu, student b )
{
this.classname = classname;
this.NumOfStu = NumOfStu;
b = new student[NumOfStu];//可能有错;
for(int i=0; i<NumOfStu; i++)
{
b[i] = new student("name", 22, "boy");
}
}
}
student b = new student()
Class_1 a = new Class_1("soft",50,b);


上面的方法是错的:

但有一个方法可以替代那是:

class Class_1
{
String classname;
int NumOfStu;
Class_1(String classname, int NumOfStu, student [] b )
{
this.classname = classname;
this.NumOfStu = NumOfStu;

for(int i=0; i<NumOfStu; i++)
{
b[i] = new student("name", 22, "boy");
}

}
}

..........
student [] b = new student[50];
Class_1 a = new Class_1("soft",50,b);
但是这样已经失去灵活性了:

帮忙。。。。。。。。。。。。。。
帅帅兔子 2004-10-11
  • 打赏
  • 举报
回复
注释中的应该改为:
student[] c = new student[10]

for(int i=0; i<10; i++)
c[i] = new student();
set.setname(c[0],"dengsfa");
System.out.println(c[0].name);


另外还需要在student类中加入一个不带参数的构造函数
aheadyes 2004-10-11
  • 打赏
  • 举报
回复
谢了: 啊 我刚才少用了一个 new:)
结贴
trk_computer 2004-10-11
  • 打赏
  • 举报
回复
肯定可以
类名[] 数组名 = new 类名[数组大小];
边城狂人 2004-10-11
  • 打赏
  • 举报
回复
Java 中,数组是对象(http://www3.ccw.com.cn/club/bbs/showEssence.asp?id=15576)
所以需要用 new 来构造
虽然 studion aa[] = new student[10]; 也行,但是这样不容易体现出来数组是对象的思想,
所以最好用 student[] aa = new student[10];
边城狂人 2004-10-11
  • 打赏
  • 举报
回复
可以的
student[] aa = new student[10];
for (int i = 0; i < 10; i++)
aa[i] = new student("name", 22, "boy");
set.setname(aa[0], "dengsfa");
System.out.println(aa[0].name);

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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