对变量编译出错不是很理解;如:byte b1=3,b2=4,b;
b=b1+b2;
编译时出错是因为
1.byte类型在进行运算时会自动提升为int类型;2.jvm无法判断变量值大小。
但是
int b1=3,b2=4,b;
b=b1+b2;
就不会出错。按我的理解就是
1.int与int类型在进行运算时会不会自动提升为long,如果会,那么编译也应该出错,如果不会,那这一条便没有问题,也就是说自动提升数据类的导致编译出错只会出现在byte、short、char类型时,而对于int、long等数据类型只要不是把大的数据类型的值赋给小的数据类型,便不会出错。
2.在编译时jvm无法得到变量b1,b2的值,所以不知道这个值赋给同样数据类型的b会不会溢出,所以才会报错,但是byte类型会报错,但是int类型不报错,这是为什么?
初学java有一些总结和困惑,希望与各位一起讨论学习,增长自己的认识深度,提高学习兴趣,顺便赚点技术分,嘿嘿,第一次发帖,如果哪里出现了什么漏洞或者写的不好的地方,希望各位大神清点喷,谢谢~~~~~~
|
|