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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看到许多大神关于数据类型转换的讨论,解开了许多疑惑,但下面的一个问题让我始终想不通,我也查了许多资料也没有看到。
看到有一位大神说byte b = 1; b = ++b; 这个表达式里面包含了个隐式的类型转换,还有一位大神说,这个jvm虚拟机会认为我们是粗心,还自动帮我们完成转换。
我彻底的迷惑了,希望来一位技术大牛给我解惑一下,详细简单即可,谢谢。

13 个回复

倒序浏览
这个你可以认为没有类型转换问题。
回复 使用道具 举报
这中间涉及到一个由8位字符到32位字符的提升,毕老师的视频中有一段关于字符提升和截取讲的蛮清楚的,你可以看一下
回复 使用道具 举报
能不能讲解详细点,你们讲的太高深了我都听不懂呀
回复 使用道具 举报
byte b = 1; 数字1,默认的是int 类型,隐式装换成byte
回复 使用道具 举报
byte b = 1; 这里的b还是byte类型,但到了下面这条语句
b = ++b;
会先让b自加,自加完b就是int型了,int型赋值给byte型,就是你所谓的隐式类型转换。
回复 使用道具 举报
凡是+=,-+,*=,/=这类的运算符,都可视为带有强制类型转换
回复 使用道具 举报
低精度数据类型会自动转为高精度数据类型~ byte会默默的自动转为int 进行计算~

数据类型 由低到高 的转换顺序:
byte - short  - int - long - float -double
char - int
回复 使用道具 举报
静心明德 发表于 2015-4-24 14:30
byte b = 1; 这里的b还是byte类型,但到了下面这条语句
b = ++b;
会先让b自加,自加完b就是int型了,int型 ...

int型的赋值给byte,byte类型的取值范围要小于int,这样不就不兼容了么
回复 使用道具 举报
cjmjava 发表于 2015-4-24 14:32
凡是+=,-+,*=,/=这类的运算符,都可视为带有强制类型转换

这是++运算符,也不是赋值运算符呀
回复 使用道具 举报
hufu4635 发表于 2015-4-24 14:42
这是++运算符,也不是赋值运算符呀

++,--都有这个作用的,你可以把这样的运算符全试一遍,应该不会报错的
回复 使用道具 举报
cjmjava 发表于 2015-4-24 15:01
++,--都有这个作用的,你可以把这样的运算符全试一遍,应该不会报错的

我知道不会报错,我想知道的是其中的原因。。。。
回复 使用道具 举报
hufu4635 发表于 2015-4-24 15:24
我知道不会报错,我想知道的是其中的原因。。。。

我室友说这些运算符都带有自动强制转换
回复 使用道具 举报
hufu4635 发表于 2015-4-24 14:34
int型的赋值给byte,byte类型的取值范围要小于int,这样不就不兼容了么

当前的赋值并没有超出范围。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马