黑马程序员技术交流社区
标题:
为什么会出错
[打印本页]
作者:
疯狂程序
时间:
2013-4-2 23:15
标题:
为什么会出错
本帖最后由 疯狂程序 于 2013-4-3 15:02 编辑
class Person {
private int money;
private int id;
private int passwd;
public void setMoney(int money) {
this.money = money;
}
public int getMoney() {
return money;
}
}
//不会报错
int mo = p.getMoney();
mo += money;
//为什么换成
p.getMoney() += money;//就会报错
捕获.PNG
(5.01 KB, 下载次数: 8)
下载附件
2013-4-2 23:15 上传
作者:
yangyinhui
时间:
2013-4-2 23:25
p.getMoney() 只是一个方法,需要定义返回值类型的,p.getMoney() += money没有定义返回值类型所以会报错
作者:
随便
时间:
2013-4-2 23:27
因为p.getMoney() += money;等同于p.getMoney() = p.getMoney() + money;
左边的p.getMoney返回的是一个int型的值,值只能做等号右边的运算,不能放在左边当作变量使用。
所以报错是需要变量,找到的是指。
作者:
luguoyuanf
时间:
2013-4-2 23:35
p.getMoney属于方法,而Money是变量,类型都不一样肯定不能运算,p.getMoney()返回的值必须要用相同类型的变量接收,p.getMoney() += money在语法上就是错误的,不用太纠结.
作者:
田光峰
时间:
2013-4-3 10:50
p.getMoney() += money;
他就相当于 p.getMoney()=p.getMoney()+money 这样就是把一个值赋给另一个值 ,应该付给一个变量并且还要有类型定义。
作者:
邵彩华
时间:
2013-4-3 11:32
试问,P.getMoney调用了Person的getMoney方法,返回的是一个int类型数值,你的表达式就变成了数值+=数值,形如1+=2;你觉得这个表达式怎么运算,1+2后的结果赋给了谁? 你需要一个变量来接受运算结果值,所以,等式左边只能是变量不能是常量。
改为:int m = P.getMoney;
m+=Money;
你只要记住一点就行了:除了常量在初始化的时候可以被赋值,只有变量可以被赋值,故赋值符号“=”左边只能是个变量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2