第1个回答 2011-04-23
Students[] stu = new Students[5];这一步叫实例化,实例化是只在内存中给对象分配一个存储空间,不是指赋值。
Students[] stu = new Students[5];你在这一步指定了数组的类型是Students的,也就是说数组中只能存放Students的实例。stu[0]=90;stu[1]=100;
你这两部操作,是编译通不过的,你在一个Students类型的数组中存放了int型的变量,java不允许。
stu[0]=new Students();这句话是指你创建了一个Students类的实例,然后存放在了数组stu中。本回答被网友采纳
第2个回答 2011-04-23
首先,楼主必须要明确,数组是一种数据类型
类也是一种数据类型
比如Student 就是一个自定义的数据类型, Student[]这个是一个数组类型,两者是不等价的
Student[] students=new Student[5];
这里你声明了一个Student类型的长度是5的数组,这个数组里面只能装Student类型的数据
也就是说,这个数组里面只可以存在Student,由于这里你没有对数组里面的元素进行初始化,那么数组默认对引用类型的初始化的值就是null
类似这样:Student[] students={null,null,null,null,null};
这时候,由于数组元素都没有进行实例化,所以,你必须要进行实例化
students[0]=new Student();
这个的意思就是创造了一个Student类型的数据,并装入数组的第一个元素位
引用类型的数据都是在堆上开辟空间,如果是null值,则是未开辟空间,这时候,这个类型的数据实际上是不存在的,也就是空指针,如果你直接使用他的字段,会抛空指针异常
第3个回答 2011-04-23
Students[] stu = new Students[5];
是对数组本身实例化;
stu[0]=new Students();是对数组中的元素实例化。
new Students();会在堆上生成一个对象,消耗一个对象的空间;
stu[0]是对象的一个引用,一个引用消耗的空间就是一个Int数据,很小的,;
stu[0]=XXX 表示的是让这个引用指向XXX对象。
第4个回答 2011-04-23
1、这不是叫实例化,写法是错的,一个Students数组不能直接接受一个整数值。这表示创建好的数组可以存放Students的实例,即可以存放new Students()出来的东西
2、这个叫实例化,
3、当一类实例化后,就可以访问这个类中定义的相关属性与方法了,使用方式为:
stu[0].方法名()或stu[0].属性名