import java.util.*;
public class Test
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3];
staff[0] = new Employee("abc", 3000, 1999, 10, 12);
// 为什么不这样写成staff[0] = ("abc", 3000, 1999, 10, 12);
//Employee就相当于一个int呀?
int[] array = new int[3];
array[0] = 1; //这里就没有再用new了。
}
}
class Employee
{
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
hireDay = calendar.getTime();
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
String name;
double salary;
Date hireDay;
}
一直觉得new 相当于C语言中的分配空间。
------解决方案--------------------
Employee[] staff = new Employee[3];是对象数组,新对象肯定要new
int[] array = new int[3];基本数据类型数组,基本数据类型本来就不用new
看来楼主还有很长的路要走!!!
------解决方案--------------------
如果Employee这一段用C写,那么staff变量应该是 Employee* [],staff[0]其实是一个对象指针。这是Java的规定,一切对象引用都是指针
------解决方案--------------------
数组是一个引用类型,要new
然后又因为数组的元素为对象,即类的实例,类也是引用数据类型,所以要new开辟内存空间
------解决方案--------------------
你申明数组的时候,类型时Employee的。当你在给数组staff[0]赋值的时候,用的new 相当于你调用的Employee的构造方法,创建了一个Employee的对象放在了数组的第一个位置,所以你用了2次new。我是这样理解的