数据类型是什么?数据类型就是对于数据定义,每一种数据类型都会分配一定的内存空间,而它往往是和
变量在一起使用的,变量又是某个范围内可发生改变的量,这里不多做介绍
一、提出问题
下面是一道公司的面试题
byte b1 = 3,b2 = 4,b;
b = b1 + b2;
b = 3 + 4;
问题是程序执行到哪一步会出错,为什么?
这段程序执行结果是这样的
在代码的第三行会出现了不兼容的类型问题
二、分析问题
在java中数据类型byte,1个字节;int(默认类型),4个字节
在声明变量时,b1,b2,b都为byte型,并且b1,b2都有初始值分别为3,4
1.因为java中默认的数据类型为int,在执行b1+b2时会自动先把相加后的和转换为int型,即4个字节,
然后在赋值到b中,又因为byte型只有一个字节长度,从int型转换到byte需要截取三个字节,所以会出
现数据可能会有损失的错误;
2.第三行按理来说也会出现这样的问题,但是没有报错,这是因为对于常量在做运算的时候是提前把结
果运行出来的,原因如下
每次写完代码之后我们需要先编译,然后再运行程序,常量的运算在编译的时候就会自动执行,并且
结果已经计算出来那么在运行的时候就不会出现数据损失的错误,对于变量由于数据是不一定的,需要在
执行时计算,我们在编译的时候就会发现前后数据类型不一致,然后就会提示我们
解决这个问题也不难,只要把b1+b2强制转换为byte类型就行了
三、小结
java中的数据类型是自动向上兼容的,如果全部声明为long类型也就不会出现错误
1.byte,short,char-int-long-float-double 从小到大转换
2.byte,short,char之间不相互转换
对于一些特别细节的东西以前没有那么在意,当真正用到的时候就会出现问题