黑马程序员技术交流社区

标题: (第一次提问)基本数据类型转换的一个疑惑 [打印本页]

作者: hufu4635    时间: 2015-4-24 09:57
标题: (第一次提问)基本数据类型转换的一个疑惑
看到许多大神关于数据类型转换的讨论,解开了许多疑惑,但下面的一个问题让我始终想不通,我也查了许多资料也没有看到。
看到有一位大神说byte b = 1; b = ++b; 这个表达式里面包含了个隐式的类型转换,还有一位大神说,这个jvm虚拟机会认为我们是粗心,还自动帮我们完成转换。
我彻底的迷惑了,希望来一位技术大牛给我解惑一下,详细简单即可,谢谢。
作者: 1017161726    时间: 2015-4-24 10:54
这个你可以认为没有类型转换问题。
作者: wwfangfang    时间: 2015-4-24 11:31
这中间涉及到一个由8位字符到32位字符的提升,毕老师的视频中有一段关于字符提升和截取讲的蛮清楚的,你可以看一下
作者: hufu4635    时间: 2015-4-24 11:34
能不能讲解详细点,你们讲的太高深了我都听不懂呀
作者: lily15    时间: 2015-4-24 14:13
byte b = 1; 数字1,默认的是int 类型,隐式装换成byte
作者: 静心明德    时间: 2015-4-24 14:30
byte b = 1; 这里的b还是byte类型,但到了下面这条语句
b = ++b;
会先让b自加,自加完b就是int型了,int型赋值给byte型,就是你所谓的隐式类型转换。
作者: cjmjava    时间: 2015-4-24 14:32
凡是+=,-+,*=,/=这类的运算符,都可视为带有强制类型转换
作者: 大西洋    时间: 2015-4-24 14:34
低精度数据类型会自动转为高精度数据类型~ byte会默默的自动转为int 进行计算~

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

int型的赋值给byte,byte类型的取值范围要小于int,这样不就不兼容了么
作者: hufu4635    时间: 2015-4-24 14:42
cjmjava 发表于 2015-4-24 14:32
凡是+=,-+,*=,/=这类的运算符,都可视为带有强制类型转换

这是++运算符,也不是赋值运算符呀
作者: cjmjava    时间: 2015-4-24 15:01
hufu4635 发表于 2015-4-24 14:42
这是++运算符,也不是赋值运算符呀

++,--都有这个作用的,你可以把这样的运算符全试一遍,应该不会报错的
作者: hufu4635    时间: 2015-4-24 15:24
cjmjava 发表于 2015-4-24 15:01
++,--都有这个作用的,你可以把这样的运算符全试一遍,应该不会报错的

我知道不会报错,我想知道的是其中的原因。。。。
作者: cjmjava    时间: 2015-4-24 16:41
hufu4635 发表于 2015-4-24 15:24
我知道不会报错,我想知道的是其中的原因。。。。

我室友说这些运算符都带有自动强制转换
作者: 静心明德    时间: 2015-4-25 10:22
hufu4635 发表于 2015-4-24 14:34
int型的赋值给byte,byte类型的取值范围要小于int,这样不就不兼容了么

当前的赋值并没有超出范围。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2