java中,这个回答正确吗?
这是典型的面试题目,其实坑很多的;
a和b并没有指出是什么数据类型, 需要我们自己分析:
+和+= 运算符 ,基本数据类型中的(int ,byte,short..等)可以使用;
基本数据类型对应的封装类型(Integer,Byte,Short...)也可以使用
特别注意的是,引用类型String 也可以使用+和+=运算符
所以,现在简单的分成几种情况进行讨论:( 比较粗糙, )
情况一: a,b都是基本数据类型(排除boolean类型),比如int byte ..等
当: a的范围比b的范围大 (并且a的范围是int及其以上的时候),那么两者无区别
当: a的范围比b的范围小, 那么两者有区别
当: a和b都是相同的范围, 但是都比int范围小,是short,byte,char等的时候,虽然a和b数据类型相同,但是a=a+b依然会报错
当a是基本数据类型, b是a对应的封装类时,
(还有很多情况, 封装类型和基本数据类型的情况,比较类似, 就不依次展开了讨论了)
情况二: a 和b 其中一个字符串类型,(因为java中,字符串也可以使用+和+=运算符)
当a 是字符串类型的时候, 那么两者无区别
当b是字符串类型的时候, 那么两者编译都不会通过
所以,表面上是一个简单的面试题目. 但是其实坑很多的,需要仔细分析和推理