Byte int char 等 数据类型转换错误解析

如下图所示程序
打印变量 d的值 为变量a b之和
我们知道byte最大正值为127,而程序所展现的d的值按常理来计算为23远远小于127.所以不存在数据溢出,让我们看第二张图. Byte int char 等 数据类型转换错误解析
下图所示保报错信息为不兼容的类型,具体解释是从int型转换到byte,可能会有损失.在这里着重要说明一下 可能.说明系统也不确定会不会有损失,索性就很草率的报了错,这就解释了我们明明不超过127,也会报错的原因.然而我们定义了一堆byte型变量,为什么会报出int型错误,这里要说明一下java的机制,所有定义的整形系统默认都是int型,所有的浮点型都是double型.但是要理解以下错误这个机制还不够,还有一个机制是byte short char型变量只要参与运算,系统自动升级为int型,char型按asccii码表转换对应整数值参与运算.
所以程序中b+c的运算无论结果多少都是一个int型值,而赋值给byte型的d显然不匹配.
Byte int char 等 数据类型转换错误解析