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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xjandrew   /  2012-12-2 17:49  /  3559 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

xjandrew 发表于 2012-12-3 12:20
实例体现
short s = s + 1;
无法实现

java内部自己重载了String类的加法运算符!即什么东西与String相加都会转换成String,然后与连接。

回复 使用道具 举报
一句话,a+=b是a=a+b的简写。
没有重载之说,只有简写之说。重载是发生在方法之间的,麻烦楼主搞清名词,不要乱问。
java很多语法都有简写形式,自己以后就知道了。
回复 使用道具 举报
程宏志 发表于 2012-12-3 23:18
java内部自己重载了String类的加法运算符!即什么东西与String相加都会转换成String,然后与连接。

...

这样解释比较有门,原来是虚拟机在String类和其它包装类内部做的运算符重载,开始有点印象了。
有谁还有没有更多的解释么?
回复 使用道具 举报
本帖最后由 xjandrew 于 2012-12-5 14:35 编辑
梁胜海 发表于 2012-12-4 12:26
一句话,a+=b是a=a+b的简写。
没有重载之说,只有简写之说。重载是发生在方法之间的,麻烦楼主搞清名词,不 ...


大哥,你所说的我都明白,除了21楼说的内容,其它的我都知道,能说点我不知道的吗?
回复 使用道具 举报
short s=s+1;  这个语句将出错,因为s为short型,但是s+1后,1默认为int型,s将自动向上转型变成int型,所以s+1的结果是int型,将int型变量赋给short型变量,所以出错
short s+=1; 这个语句是正确的,这个语句可以看做是 short s=(short)(s+1),系统在底层自动执行了强制转换,将int型强转为short型,所以运行通过。
回复 使用道具 举报
cjx2080@163.com 发表于 2012-12-5 15:12
short s=s+1;  这个语句将出错,因为s为short型,但是s+1后,1默认为int型,s将自动向上转型变成int型,所 ...

我知道这一点,那么运算符重载是什么?
21楼解释了一部分,还有人懂吗?
回复 使用道具 举报
每个语言有每个语言的特性,运算符重载不是java支持的特性,也没有规定必须有替代实现。就像java至今不支持闭包一样,运算符重载也没有代替实现。对面向对象的语言来说,运算符本身就不够“面向对象”,一切都可以用方法来实现
回复 使用道具 举报
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。具体例子可以去百度啊, 这个是c++的网上很多这方面的例子的
回复 使用道具 举报
运算符重载,能理解的你都理解了。
很简单,比如:
1+1=2。数字相加没有问题。
a+b=ab。换成了字母呢?在JAVA里没有问题,它扩展了+的功能。而在C++里是不行的,想要能这么计算,必须对+进行重载,实现字符串或字符串相加的功能。
a+b=c。换成对象呢?其中a,b,c都是同一个类的对象。是否能 进行计算呢?不行的话,写函数对+进行重载。
回复 使用道具 举报
丁桂松 发表于 2012-12-6 00:18
每个语言有每个语言的特性,运算符重载不是java支持的特性,也没有规定必须有替代实现。就像java至今不支持 ...

这几句话我太熟悉了,有你自己的部分吗?
回复 使用道具 举报
但汉涛 发表于 2012-12-6 00:49
运算符重载,能理解的你都理解了。
很简单,比如:
1+1=2。数字相加没有问题。

这个解释使人满意
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马