JAVA有运算符重载吗?

wqrz 2006-09-22 11:28:23
有吗?书上好像写没有的,可是为什么String s=s1+s2;却可以
怎么才能写一个象String这样的类?用法大概是这样的:
MyString s="aaa"+"bbb"+s1; 我把String的构造函数都拷贝进我自己的MyString里了,好像不行`~~
...全文
3672 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
maquan 2006-09-25
  • 打赏
  • 举报
回复
【补充一点】

请把下面的程序编译后再反编译:
String a = "a";
String b = "b";
String c = a + b;
String d = c + 1;

得到的结果是:
String a = "a";
String b = "b";
String c = (new StringBuilder(String.valueOf(a))).append(b).toString();
String d = (new StringBuilder(String.valueOf(c))).append(1).toString();

所以,重载的是 append() 方法。
maquan 2006-09-25
  • 打赏
  • 举报
回复
> 你只看到了现象,没有看到本质.String s=s1+s2; 这不是运算符重载,
> 而是方法重载,JAVA中是可以方法重载的.此句真正实现是用JAVA 中的
> APPEND方法,重载的也是APPEND方法,并不是运算符.

wynton(云中漫步) 的解释才是正宗。

请把下面的程序编译后再反编译:
String a = "a";
String b = "b";
String c = a + b;

得到的结果是:
String a = "a";
String b = "b";
String c = (new StringBuilder(String.valueOf(a))).append(b).toString();

所以,wynton(云中漫步) 的解释才是正宗。
chenyulin 2006-09-25
  • 打赏
  • 举报
回复
zousoft(菜菜鸟的战斗诗歌) 回答的很好!
Student02370236 2006-09-23
  • 打赏
  • 举报
回复
JAVA中没有运算符重载...
楼主要写自己的String类,只要继承JAVA的String类就是了...
Areslp 2006-09-23
  • 打赏
  • 举报
回复
mark,,
dlxu 2006-09-23
  • 打赏
  • 举报
回复
String的运算符是JVM做了重载,所以是底层实现的,算是Sun公司为String类作弊吧,毕竟String的相加也是常用的
meadking 2006-09-23
  • 打赏
  • 举报
回复
java没有运算符重载
c++有运算符重载

java的String是个特殊的对象,
具有“不可变性”
一旦定义了就是不可变了!
有个String对象池
Student02370236 2006-09-23
  • 打赏
  • 举报
回复
我平时也没有继承过这个类,不过同时也没有关心这个类是否能被继承.
下次一定以事实为根据回答问题..
Student02370236 2006-09-23
  • 打赏
  • 举报
回复
不好意思,我回贴的时候懒了一下,没有具体考查...
wynton 2006-09-23
  • 打赏
  • 举报
回复
wqrz(呼吸还在) ( ) 信誉:100 Blog 2006-09-23 04:22:00 得分: 0


那为什么String s=s1+s2; String就可以重载运算符呢?String的构造函数也没什么特别的啊


你只看到了现象,没有看到本质.String s=s1+s2; 这不是运算符重载,而是方法重载,JAVA中是可以方法重载的.此句真正实现是用JAVA 中的APPEND方法,重载的也是APPEND方法,并不是运算符.
jk88811 2006-09-23
  • 打赏
  • 举报
回复
总之我们自己编写程序是不能实现运算符重载的, 但Java本身已经给我们做好了String类的重载, 只是为了方便我们平时进行String的操作而已...
zousoft 2006-09-23
  • 打赏
  • 举报
回复
这不是运算符重载,而是隐含调用toString(),楼主可以自己设计一个类,然后加入一个public String toString();或者什么都不加,直接继承Object的toString()显示内存地址。然后当你调用System.out.print()以及与String做+运算时,toString()会被自动调用!
wqrz 2006-09-23
  • 打赏
  • 举报
回复
那为什么String s=s1+s2; String就可以重载运算符呢?String的构造函数也没什么特别的啊
vcokno1 2006-09-23
  • 打赏
  • 举报
回复
楼上不要误人,String 是 final class, 不能被继承。
支持运算符重载和定义新运算符的语言:

* PostgreSQL的SQL方言
* Ruby
* Haskell

支持运算符重载的语言:

* Ada
* C++
* C#
* D
* Perl
* Python
* Pico (某种程度上)

不支持运算符重载的语言:

* C
* Pascal
* Delphi
* Java
* Visual Basic

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧