强烈建议读者先好好看看如上代码:
如上代码的解释如下:
一、首先在java中 例如1,2等数 有人叫常量 也有人叫字面量 不管啥大家知道啥意思就Ok了 ,还有一叫Int的数据类型 我们定义时 int i = 2 ;
二、在java中有个编译原理 那就是小于32位的数据类型按照32位数运算
好了 我们来说如上代码
一、
byte b1 = 1 ;
byte b2 = 2 ;
//byte b3 = b1 + b2 ;Type mismatch: cannot convert from int to byte
我们知道 b1 + b2 果断没超过byte范围啊 ,但是错误提示是 int to byte
按照我们的原理 b1 b2 小于32位 所以 b1 + b2 按32位运算(就是按Int运算)
所以 int 不能 to byte
二、
byte b4 = 5 + 6 ;
//byte b5 = 5 +127 ;Type mismatch: cannot convert from int to byte
但是 如上中 5 ,6却能 ,这是因为在编译时 5 + 6 不是 (int)5+(int 6)
而是先把5和6相加 也就是11 ,然后给b4所以对
三、
char c;
c = 'a' + 2 ;
//c = c + 2 ;Type mismatch: cannot convert from int to char
第一个对 ,第二个却不对 ,不都是char+2么?
原因简单 'a'是常量或者字面量 和上面的雷同
c= c + 2 ;一样 char小于32位 c+2结果是int (但是不是因为有2,是因为char小于32位)
四、
int i = 2;
//c = c + i;Type mismatch: cannot convert from int to byte
c = (char) (c + i);
这个就是我们一般用的
五、
c ++;
这是能过通过的 说明他的内部有可能是 c=(char)(c + 1);
这写问题 我们一般不想吧
总是不对了 就直接强制转换
嘿嘿~~~