A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 chocolate 于 2012-1-6 22:13 编辑

这个也是我在网上找的   里面说的是 这个题目 经常会被当做找工作面试的时候会提出的  
          我也在网上找出了答案  希望大家能 看看   能有所帮助  
  因为今天看了 两个人问了几乎一样的问题  所以 我才想这个问题 再给大家说一下  

   题目是     short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

   答案是             short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。:):)

10 个回复

倒序浏览
s1 += 1;
这个为什么正确??
回复 使用道具 举报
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
回复 使用道具 举报
因为short类型加上int类型能自动转化为int类型。1是int类型
回复 使用道具 举报
杨丹丹 发表于 2012-1-6 23:39
因为short类型加上int类型能自动转化为int类型。1是int类型

懂了 谢谢
回复 使用道具 举报
类型不同,将1改为1.0也可以的
回复 使用道具 举报
王涛 黑马帝 2012-1-9 20:28:54
7#
虽然x+=y和x=x+y两个表达式在平时使用时可以通用,都可以实现两个变量值相加,但是这两种表达式在内部运行时存在一些细微差别,差别在于+=除了实现+功能之外还要进行一次类型的强制转换。
回复 使用道具 举报
支持黑马
回复 使用道具 举报
支持黑马
回复 使用道具 举报
袁野 黑马帝 2012-1-10 13:33:22
10#
这道题 我研究过;说白了 就是类型转换的问题
对于这道题的我的理解就是不管在什么情况下 只要 范围大=范围小的或者  范围小的=(强制转换)范围大的 这样考虑 我想是不会出现问题的吧!
回复 使用道具 举报
袁野 黑马帝 2012-1-10 13:55:54
11#
虽然x+=y和x=x+y两个表达式在平时使用时可以通用

上面有人说的  对与这俩个表达式 ; 用水都可以 ,他俩的区别 也体现在 代码的优化;我一写第一个表达式 效率比第二个高
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马