黑马程序员技术交流社区

标题: 为什么会出错 [打印本页]

作者: 疯狂程序    时间: 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;//就会报错


作者: 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