java中既然没有运算符重载,那么它的代替实现是什么???
我来帮他解答
满意回答
2011-04-22 13:43
其实是有的,就是字符串操作里的+和+=。但是不能自定义运算符重载,所以只有这个是重载的。它的代替实现实际上就是方法(函数)。比如BigDecimal类,可以用来表示很长的十进制数,这样的数相加并不用重载的+号而直接有一个叫做add(BigDecimal)的成员函数来实现。
4|评论(1)


求助知友
timeslot | 当前分类:12 级 排名:2770
擅长JAVA相关:12 级 排名:2770
提问者对回答的评价:
谢谢指教!
按默认排序|按时间排序
 其他回答 共2条
检举|2011-04-22 13:04loveOuyoko|当前分类:21 级排名:44
每个语言有每个语言的特性,运算符重载不是java支持的特性,也没有规定必须有替代实现。
就像java至今不支持闭包一样,运算符重载也没有代替实现。

对面向对象的语言来说,运算符本身就不够“面向对象”,一切都可以用方法来实现


基本态度

 

对于c++来说,一开始便是从c开始的,最初称为带类的c,与c的兼容性在很多设计决策中起了很多作用。在类型设计中,表现在类型保持了兼容c的,虽然有了class,但依然保留了struct,决定性的原因就是兼容性。而java最初设计的时候,就是以一门面向对象语言来设计的,从c,c++,smalltalk里学习,但并没有保持向上兼容性,以一门新的语言的姿态出现。最终对class的处理上,c++尽量保持了与基本类型的相容性,让class表现的就像一个基本类型。一个class定义就与基本类型一样,是一组数据实体,同时引入了运算符重装机制,使得class更可以像一个基本类型那样+-*/...。java对于class则采用了另一个方向,与基本类型区别鲜明,也没有运算符重载。为对象引入了一个新的间接层,每个class的对象就是一个引用。这样的设计一方面把内存的管理交给了垃圾回收器,另一方面使得容器实现时,可以将所有的对象一致对待,间接层的引入提高了抽象层次,同时带来了间接引起的访问开销。