Java中运算符能否重载,String的=号和+又是如何实现的呢?

adminxp 2004-11-28 12:32:42
Java中运算符能否重载,String的=号和+又是如何实现的呢?

一直让我很奇怪的问题
...全文
5438 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
since2006 2004-11-28
  • 打赏
  • 举报
回复
String中的+号,会被转换为StringBuffer的append()方法来操作的。
xuyang821225 2004-11-28
  • 打赏
  • 举报
回复
........................
jiangxuhong217 2004-11-28
  • 打赏
  • 举报
回复
String str = "a"+"b"+"c";
的值等于
String str = new String("abc");
的值。
jiangxuhong217 2004-11-28
  • 打赏
  • 举报
回复
java里是没有运算符重载的,String+是StringBuffer的append()方法来实现的,如:
String str = new String("abc");
编译时等效于
String str = new StringBuffer().append("a").append("b").append("c").toString();
jFresH_MaN 2004-11-28
  • 打赏
  • 举报
回复
java中确实没有云运算符重载,唯一例外是String里面的=和+
Yanbin_Q 2004-11-28
  • 打赏
  • 举报
回复
==比较是不是同一个对象,equals()就要你看看源代码中是怎么实现的了
muymuy 2004-11-28
  • 打赏
  • 举报
回复
从语言一级来看,java不支持运算符重载。

String类的"=","+","+=",看似运算符重载,实际不是,只是在java编译器里做了一点手脚。
java编译器对String的运算符做了特殊处理。

比如:
String s = "s1";
s += "s2";
编译器转换成了:
String s = "s1";
s = (new StringBuilder()).append(s).append("s2").toString();

如果你有Java Decompiler(如jad),你可以将一个字符串操作的程序反编译来看看。奥妙就在其中。
hvbird 2004-11-28
  • 打赏
  • 举报
回复
JAVA中只有"="和"+"两个运算符重载!
zhifangtu 2004-11-28
  • 打赏
  • 举报
回复

Java中不支持运算符重载。

+,-,*,/已经可以足够完成常用的操作了,如果什么时候感觉用起来不习惯,大概是没有找到正确的方法哦:)
adminxp 2004-11-28
  • 打赏
  • 举报
回复
回复人: beakham(我不是贝克汉姆) ( ) 信誉:88 2004-11-28 01:00:00 得分: 0

JAVA中没有运算符重载吧
STRING不是基本类型

这句话有些奇怪,运算符重载不就是用于类的吗?基本型别重载做什么?

HeXuZhOnG(BT,思维中的战斗机)

+号用append()也许可以解释,但是等于号呢?

不要说是clone()

还有== 难道是equals()

beakham 2004-11-28
  • 打赏
  • 举报
回复
JAVA中没有运算符重载吧
STRING不是基本类型

62,634

社区成员

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

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