java初学者知识小总结-01(byte数据类型赋值出错)

数据类型

1.byte数据类型的说道

给byte数据类型赋值的时候很多时候会出现问题,说是Type mismatch: cannot convert from int to byte,这是因为byte赋值的右侧不能出现变量,

给个例子看看:

byte a=4;

a=a+4;

这是程序就会出现上述的问题,因为java中常量的默认类型都是int类型的,当进行赋值操作的时候,如果像这个一样,赋值给byte类型的数据,这是系统内部会先判断这个数据是否超过byte类型的最大范围(-128~127),如果没有超过则可以正常赋值,超过了会报错,但当程序执行到a=a+4这一句时,系统不能判断a+4是否在范围内,有的人会问了,a=4,a+4=8,是在范围内啊,但是可要知道了,这里的a是一个变量,变量顾名思义就是数值可以变化的量,说不定哪天有人把a=4这句改为a=127,这不就不行了么,,,

其中short类型和byte类型是一样的,如果赋值变量右侧有变量存在,都有可能会报错,,,

但是int类型不是这样的,如果右侧有变量,而且超过了int类型所涵盖的最大值,它就不会报错,只会溢出,


还有一个符号要注意+=  -=    *=   /=

这里就说一个+=

我们都知道a+=2;和a=a+2;效果是一样的,但这不是完全正确的,例如:

short s=4;

s+=2;

//s=s+2;如果写这句就会出错,原因和上面是一样的,赋值符号右侧有变量了,但是s+=2;这句话就是可以的,因为执行这句话的时候系统会先判断付给s的数是否超过它的范围,如果超过了,报错,没超过,强制类型转换之后进行赋值,所以就知道了,s+=2,这句话其实是等同于(在s是short类型时)s=(short)(s+2)

System.out.println(s);



你可能感兴趣的:(java初学者知识小总结-01(byte数据类型赋值出错))