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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

本帖最后由 xjandrew 于 2012-12-6 12:39 编辑

既然+和=+JAVA中运算符重载的代替实现,那么怎么理解运算符重载呢?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

30 个回复

倒序浏览
java中不允许运算符重载,至于String str="abc"+"12";里面的+主要是用于连接字符串,这是在java内部实现的,java不允许我们对运算符重载,至于字符串连接+主要是通过StringBuffer的append方法来进行的

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
没能解释运算符重载,又讲了一遍+跟+=。
还没解决疑问

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
+= 是 左边等于左边加右边.由jvm做了一个强转操作.
+当String类型  用他链接的时候做字符串连接符.将字符串进行串联.当与基本数据类型中存在时做加法运算.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
丁桂松 发表于 2012-12-2 23:26
+= 是 左边等于左边加右边.由jvm做了一个强转操作.
+当String类型  用他链接的时候做字符串连接符.将字符串 ...

大哥们,我表达的意思不够清楚吗?
完全是答非所问啊!
回复 使用道具 举报
不知道谁懂了.反正我没懂
回复 使用道具 举报
“+”是算术运算符,而+=是赋值运算符,它只不过比=多了些功能而已。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 xjandrew 于 2012-12-3 17:00 编辑
程宏志 发表于 2012-12-2 23:54
“+”是算术运算符,而+=是赋值运算符,它只不过比=多了些功能而已。


实例体现
short s = s + 1;
无法实现
short s =+ 1;
可以实现

System.out.println(2386+"");
输出字符串

那么运算符重载怎么理解?
回复 使用道具 举报
何伟 中级黑马 2012-12-3 12:31:17
9#
+  是算数运算符  比如   int x=3;    x=x+1; 而+=是赋值运算符,比如    int  x=4;x+=2;“+=”是把左右两边的值赋给左边,这里x+=2,就相当于   x=x+1.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
何伟 发表于 2012-12-3 12:31
+  是算数运算符  比如   int x=3;    x=x+1; 而+=是赋值运算符,比如    int  x=4;x+=2;“+=”是把左 ...

看来运算符重载这个问题不是初级阶段的人能解答的,没有个给力的解答呀
回复 使用道具 举报
xjandrew 发表于 2012-12-3 12:41
看来运算符重载这个问题不是初级阶段的人能解答的,没有个给力的解答呀 ...

运算符重载不是java支持的特性,也没有规定必须有替代实现
回复 使用道具 举报
何伟 发表于 2012-12-3 12:48
运算符重载不是java支持的特性,也没有规定必须有替代实现

敢问你回答的是什么问题?

运算符重载怎么理解?

考sun公司的认证时才会遇到的知识点,大哥你在哪个阶段呢?
回复 使用道具 举报
xjandrew 发表于 2012-12-3 13:49
敢问你回答的是什么问题?

运算符重载怎么理解?

目前确实不知道Java有运算符重载这一说,可能我还没学到吧,丢人了-_-#
回复 使用道具 举报
xjandrew 发表于 2012-12-3 13:49
敢问你回答的是什么问题?

运算符重载怎么理解?

目前确实不知道Java有运算符重载这一说,可能我还没学到吧,丢人了-_-#
回复 使用道具 举报
xjandrew 发表于 2012-12-3 12:20
实例体现
short s = s + 1;
无法实现

我很纳闷,short s += 1;是怎么实现的,s刚定义,连初始化都没有,你+=1编译器不报错吗?
回复 使用道具 举报
本帖最后由 xjandrew 于 2012-12-3 17:03 编辑
黑马_张伟 发表于 2012-12-3 15:49
我很纳闷,short s += 1;是怎么实现的,s刚定义,连初始化都没有,你+=1编译器不报错吗? ...


敲误
顺便你也整点重点
回复 使用道具 举报
我感觉你问的就很难理解,满篇除了贬低别人之外,就没有对题目认真解释过。或许你才应该“整点重点”。别人试图回答你是别人的权利而不是义务,你可以不接受,但不要贬低任何人。
回复 使用道具 举报
本帖最后由 xjandrew 于 2012-12-3 17:46 编辑
黑马_张伟 发表于 2012-12-3 17:15
我感觉你问的就很难理解,满篇除了贬低别人之外,就没有对题目认真解释过。或许你才应该“整点重点”。别人 ...


的确如此,你说的没错,同时这个感受你也体会下
你提的问题得到的答案总是答非所问,连着3回你还能保持淡定之?
咱都是老大不小的人了,对于问题的理解把握的好点可以吧。

最后我再把问题划线标示出来吧

既然+和=+JAVA中运算符重载的代替实现(JAVA不支持运算符重载,那么怎么理解运算符重载呢?
运算符重载是什么?
回复 使用道具 举报
何伟 来自手机 中级黑马 2012-12-3 17:55:13
19#
针对楼主这个问题,我很好奇而且不是很懂只有问度娘,下面是度娘的答案。


JAVA有运算符重载吗?
如果没有,可是为什么String   s=s1+s2;却可以?
这不是运算符重载,而是方法重载,JAVA中是可以方法重载的.
此句真正实现是用JAVA   中的APPEND方法,重载的也是APPEND方法,并不是运算符.
请把下面的程序编译后再反编译:  
                  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(); 
请把下面的程序编译后再反编译:  
                  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()   方法。



最后还啰嗦几句,楼主应该把问题说完全点,其实沙发回答的是正确的。
回复 使用道具 举报
本帖最后由 xjandrew 于 2012-12-3 18:26 编辑
何伟 发表于 2012-12-3 17:55
针对楼主这个问题,我很好奇而且不是很懂只有问度娘,下面是度娘的答案。


的确,JAVA中并没有运算符重载,具体运行上实际重载的是StringBuilder中append()方法
而+和+=或=+只能是运算符重载的代替,那么追本溯源,运算符重载又是什么?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马