基本数据类型那点事

     数据类型是什么?数据类型就是对于数据定义,每一种数据类型都会分配一定的内存空间,而它往往是和
 变量在一起使用的,变量又是某个范围内可发生改变的量,这里不多做介绍
 一、提出问题
     下面是一道公司的面试题
		
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之间不相互转换
     对于一些特别细节的东西以前没有那么在意,当真正用到的时候就会出现问题

                
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值