本帖最后由 黄敏 于 2012-8-21 13:05 编辑
今天无意间看到,这个面试题,但是怎么想就就是想不明白
给出的题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答案: 对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。 对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
为什么第一个就有错了,第二个就没错了?他们之间的运算有什么区别吗? s1 += 1,s1= s1+1,不是一样的结果吗? 请相信解释清楚
|