A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疯狂程序 中级黑马   /  2013-4-2 23:15  /  1332 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 疯狂程序 于 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;//就会报错

5 个回复

倒序浏览
p.getMoney() 只是一个方法,需要定义返回值类型的,p.getMoney() += money没有定义返回值类型所以会报错
回复 使用道具 举报
因为p.getMoney() += money;等同于p.getMoney()  = p.getMoney() + money;

左边的p.getMoney返回的是一个int型的值,值只能做等号右边的运算,不能放在左边当作变量使用。
所以报错是需要变量,找到的是指。

点评

到位的解释  发表于 2013-4-2 23:33

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
p.getMoney属于方法,而Money是变量,类型都不一样肯定不能运算,p.getMoney()返回的值必须要用相同类型的变量接收,p.getMoney() += money在语法上就是错误的,不用太纠结.
回复 使用道具 举报
p.getMoney() += money;
他就相当于  p.getMoney()=p.getMoney()+money   这样就是把一个值赋给另一个值 ,应该付给一个变量并且还要有类型定义。
回复 使用道具 举报
试问,P.getMoney调用了Person的getMoney方法,返回的是一个int类型数值,你的表达式就变成了数值+=数值,形如1+=2;你觉得这个表达式怎么运算,1+2后的结果赋给了谁? 你需要一个变量来接受运算结果值,所以,等式左边只能是变量不能是常量。
改为:int m = P.getMoney;
         m+=Money;
你只要记住一点就行了:除了常量在初始化的时候可以被赋值,只有变量可以被赋值,故赋值符号“=”左边只能是个变量。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马