频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
基本数据类型那点事
2015-07-10 10:31:18      个评论    来源:狂奔的蜗牛  
收藏   我要投稿
     数据类型是什么?数据类型就是对于数据定义,每一种数据类型都会分配一定的内存空间,而它往往是和
 变量在一起使用的,变量又是某个范围内可发生改变的量,这里不多做介绍
 一、提出问题
     下面是一道公司的面试题
		
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之间不相互转换
     对于一些特别细节的东西以前没有那么在意,当真正用到的时候就会出现问题

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 类型 数据
上一篇:Swift调用OC和C
下一篇:Swift教程之typealias取代OC的typedef
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站