代码如下  
class a{public static void main(String []args){        Object g="ttt";
          String h="lll";
              g+=h;}
}
编译报错  不兼容的类型。但我知道 复合赋值表达式  会有个强制转换的过程 会把右边运算结果转变为左边的变量的类型则g+h本应该是个String类型,现在应该是Object类型,但是String是Object的子类  ,将子类强制转换成父类 我个人认为不应该存在问题的 可是编译却报错 于是我改成如下形式
class a{public static void main(String []args){        Object g="ttt";
          String h="lll";
              g=(Object)(g+h);}
}
编译却通过了 这个让我很是纠结为什么会这样 难道    a=(强制类型转换)a+b不等于 a+=b吗?? 高手给我点启发啊  郁闷

解决方案 »

  1.   

    这是java解惑的一道题目 重点在于搞清这二者区别
      

  2.   

    回复#3    你好  你要注意下  String类型也是可以用+的 而且可以构成一个新的字符串,即返回一个String类型对象  
      

  3.   

    a += b 
    是先把b转化为a的类型后再加
    而你这里g+=h
    就是 g = g + (Object)h;
    而不是 (Object)(g + h);
    两Object相加是要出问题的
      

  4.   

      Object g="ttt";
      String h="lll";
      g=(Object)(g+h);

    没出错是因为 + 调用了 Object 的 toString() 方法
      

  5.   

    七楼讲的好啊
       两个object +会出问题