CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

x=x+1与x+=1的问题

楼主xubinvc(晴天)2005-04-02 22:47:57 在 Java / J2SE / 基础类 提问

short   x   =   5;    
      x+=11;  
  System.out.println(x);  
  上面的代码对!  
    short   x   =   5;    
                                      x=x+11;  
  System.out.println(x);  
  上面的代码错!  
  为什么呢?? 问题点数:0、回复次数:28Top

1 楼hanyaocsdn()回复于 2005-04-02 22:51:50 得分 0

关注ingTop

2 楼lionelchan()回复于 2005-04-02 23:05:15 得分 0

x   =   x   +   11;   //x+11被自动转成int型了,x是short,   so   it   is   wrong...Top

3 楼killme2008(为了生态平衡,请保护蛤蟆)回复于 2005-04-02 23:10:15 得分 0

楼上已经解释了Top

4 楼xubinvc(晴天)回复于 2005-04-02 23:11:16 得分 0

short   x   =   5;    
      x+=11;  
  System.out.println(x);  
  上面的代码对!   又应该怎样解释呢Top

5 楼dragonwy(肥肥)回复于 2005-04-02 23:17:53 得分 0

这有可能是类型转换机制的问题  
  我是这样理解的:X+=11之后  
  输出的X的类型为int型的  
  Top

6 楼xubinvc(晴天)回复于 2005-04-02 23:20:57 得分 0

dragonwy(肥肥)    
        我和你想的也是一样,但是x是short类型的呀,把一个int类型的值给short应该出错的呀!  
    他为什么又可以通过编译呢,怪^^^^^Top

7 楼killme2008(为了生态平衡,请保护蛤蟆)回复于 2005-04-02 23:24:11 得分 0

因为+=是赋值运算符,并不是算术运算符Top

8 楼godson_2003(载物)回复于 2005-04-02 23:49:44 得分 0

顶Top

9 楼slh002(呵呵)回复于 2005-04-03 00:43:31 得分 0

顶Top

10 楼smilefei(奇幻咖斐)回复于 2005-04-03 03:22:07 得分 0

它们所代表的字段不一样呀!!  
  可怎么感觉总是对的 值得研究Top

11 楼pzb19841116()回复于 2005-04-03 09:55:39 得分 0

到底是为什么呢?Top

12 楼oldmanpushcart(上善若水)回复于 2005-04-03 10:36:15 得分 0

关注ing...Top

13 楼oldmanpushcart(上善若水)回复于 2005-04-03 10:42:19 得分 0

为什么+运算会自动转换成为int类型呢?  
  这样做JAVA怕出现什么情况呢?  
   
  public   class   lxc  
  {  
  public   static   void   main(String   args[])  
  {  
  short   x   =   5;  
  x=(short)(11+x);  
  System.out.println(x);  
  }  
  }Top

14 楼jiuchaogudu(三井)回复于 2005-04-03 14:08:25 得分 0

前天去面试,正好遇到了这个问题,看来楼主已经解答过了  
  Top

15 楼TzcLove_Ancen(臻程)回复于 2005-04-03 15:19:37 得分 0

顶!!!!Top

16 楼xiaolinxx(林)回复于 2005-04-03 15:24:12 得分 0

x   =   x   +   11;   //x+11被自动转成int型了,x是short,   so   it   is   wrong...  
   
  --------  
    正确Top

17 楼maomingming(阿明)回复于 2005-04-03 15:35:08 得分 0

是啊,楼上说的很清楚啊Top

18 楼lionelchan()回复于 2005-04-03 17:04:52 得分 0

short   x   =   5;    
      x+=11;  
  System.out.println(x);  
  上面的代码对!   又应该怎样解释呢  
   
  ---------------  
   
  +=   是赋值运算符,如果自动转换类型的话,怎么还会报错呢?  
  自动转换的话,想来有的恐怖。。。Top

19 楼fly44(甘蓝)回复于 2005-04-03 17:33:01 得分 0

x   +=   11;       //这句话并没有转换类型       我测试后发现     x   并没有转换成   int型  
   
   
  public   class   TestCast   {  
  public   static   void   main(String[]   args){  
  short   x   =   5;  
  x   +=   3;  
  short   y   ;  
  y   =   x   ;  
  System.out.println("i"   +   i   +"k"   +   k   );  
  }  
   
  }  
  上面这段代码可以看出     如果x被自动转型为int的话     那么当执行   y=x   时就会报错  
  会说     cannot   convert   from   int   to   short  
  实验结果     ^_^Top

20 楼zhaohao19853(小人物)回复于 2005-04-03 18:19:55 得分 0

学习Top

21 楼mingwang(冥王)回复于 2005-04-03 18:56:29 得分 0

x   +=   11   实际执行的是   x=(short)(x+11)Top

22 楼topil(认认真真学习,塌塌实实工作)回复于 2005-04-03 21:43:20 得分 0

mingwang(冥王)     说的是正确的,x=x+11(编译错误),     x=(short)(x+11)     (编译通过)   ,而x+=11在编译的时候,系统会自动将其转成   x=(short)(x+11)   来进行编译。实际上a+=b这个操作符号只有在a为int的时候才等价于a=a+bTop

23 楼killme2008(为了生态平衡,请保护蛤蟆)回复于 2005-04-03 22:06:27 得分 0

+=,-=,*=等等都是复合赋值运算符,它自动处理类型提升和转换  
  TIJ里面已经讲过了,细看过书的话Top

24 楼mnbvc874(Java EE)回复于 2005-04-03 22:44:35 得分 0

学习了:)Top

25 楼sammyjeep()回复于 2005-04-03 23:09:49 得分 0

很多书上有得讲,我看的beginning   java2上也有的,而且讲得很细的说。Top

26 楼midthinker(呵呵)回复于 2005-04-04 02:55:38 得分 0

学习了  
  @.@||~Top

27 楼jnzsk()回复于 2005-04-04 07:38:24 得分 0

学习到了,thanks!Top

28 楼zoeg(沉香)回复于 2005-04-04 08:04:37 得分 0

x+11:11被认为是int精度比x大,相加时被认为可能丢失精度Top

相关问题

  • x
  • 0!=x与x!=0什么区别?
  • Char(X)类型与显示?
  • 在ASP语句中isempty(X) 、isnull(X) 与 X="" 这三者有何区别?
  • 简单问题:float &X与float *X有什么区别?
  • x=x&(x-1)
  • Jsp与Active X 组件的问题
  • 请教一个小问题,int []x;与int x[]有什么区别。
  • char (*x())();
  • int i=5;sprint("%d,%d",++x * ++x * ++x * --x,++x); who can answer this question?

关键词

  • 转换
  • 代码
  • short
  • 类型
  • 转成
  • 上面的代码
  • 自动
  • 问题
  • 话
  • println

得分解答快速导航

  • 帖主:xubinvc

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo