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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

    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
    实验结果  ^_^
      

  8.   

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

  9.   

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

  10.   

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

  11.   

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

  12.   

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