关于JAVA对象数组类型参数的实例化的问题!谢谢!

这是第一个类:
public class Students {
//定义身高属性
float height;
}

这是第二个类:
public class Height {
public float getAvgHeight(Students[] stu){
float avgHeight = 0;
float all = 0; //所有学生身高
int count=0; //学生计数
for(int i=0; i<stu.length; i++){
if(stu[i].height != 0){
all= all+stu[i].height;
count++;
}
}
avgHeight =all/count;
return avgHeight;
}
}

这是测试类:
public class TsetHeight {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Students[] stu = new Students[5];
Height h = new Height();
Scanner input = new Scanner(System.in);
for(int i=0; i<5; i++){
System.out.println("输入第X个身高");
stu[i] = new Students(); //实例化
stu[i].height = input.nextFloat();
}
float avgheight = h.getAvgHeight(stu);
System.out.println("平均身高是"+avgheight);
}
}

stu[i] = new Students(); //实例化

我就是这一句不理解啊,
new Students(); 请问这是个什么东西啊? 方法吗?对象吗? 在所有类里它就出现了这一次,它是用来做什么的啊? 它具体指向了某个类吗? 麻烦大大们说的详细一点啊 真心感谢啊!

第1个回答  2012-09-14
stu[i] = new Students(); //实例化

我们定义的类是不能拿来直接使用的,必须给类实例化,也就是说创建对象。new Students()就是将类Students类实例化一个对象,将这个对象存储在stu[i]这个数组元素中。

每个类不管你写没写构造方法,都有构造方法,Students()就是构造方法,用于创建类对象的。你写了构造方法,那么就会调用你写的构造方法,如果你没写,那么系统会自动创建一个构造方法。

如果不理解,可以这么写。
Strudents s = new Students(); //创建对象
stu[i] = s; //将对象存储给数组元素
第2个回答  2012-09-11
实例化,意思就是创建一个Students对象
这个程序里的作用是实例化Students[] stu = new Students[5];这个数组中每个成员本回答被提问者和网友采纳
第3个回答  2012-09-11
new Students(); 指为Students在堆中分配内存,而stu[i]代表在栈中生成的引用句柄,它指向堆中每个当前实例化的对象的内存地址。当前数组就相当于对象的集合。
相似回答