日期:2014-05-20  浏览次数:20758 次

初学java 请帮忙看下
Mouse dates[ ] = new Mouse[10];
for(int i=0;i<dates.length;i++)
{
Mouse mouse = new Mouse();
mouse.weight = 1+1/10.0;
dates[i] = mouse;
}

如上程序中,为什么最后一条语句不是 dates[i] = mouse.weight;     mouse不是构造的一个对象吗?
------解决方案--------------------
给你解释一下:

Mouse mouse = new Mouse();
mouse.weight = 1+1/10.0;
dates[i] = mouse;

第一行:构造一个空Mouse对象。
第二行:给该对象的weight属性赋值。
第三行:将已经赋过值的对象放到最上面定义好的对象数组中。

mouse.weight只是一个赋值语句,并不是代表对象。因为你的Mouse定义的public属性所以才能这样点,否则必须用set方法。
------解决方案--------------------
Mouse dates[ ] = new Mouse[10]; //数组dates的类型声明为Mouse,所以dates中的每个元素都要是Mouse类型的
for(int i=0;i<dates.length;i++)
{
Mouse mouse = new Mouse();// 在每次循环时创建一个Mouse 的对象mouse
mouse.weight = 1+1/10.0;  //weight只是mouse里的一个变量
dates[i] = mouse;  //把mouse存入dates[i]中,符合类型。不能存mouse.weight
}