【Java】基础08:数据类型的转换

基本数据类型有四类八种,相互之间有着包含与被包含的关系。

比如9,它既可以是字节型,也可以是短整型,也可以是整型,长整型,甚至还可以是一个字符。

那他们之间是如何转化的呢?

一、自动转换

看下面例子:

2和2.0,在我们的认知中,可能就觉得它们其实就是一回事,但是在Java世界里,它们对应不同的数据类型。

2这个常数默认是int类型的,当它赋值给一个double类型的时候,输出时就会自动转换

代码执行过程中**取值范围小的类型自动转换为取值范围大的类型**

其中大小范围如下:

byte、short、char  <  int  <  long  <  float  <  double

再看一个例子:


1,它既可以是byte、也可以是short、char、int、long,但是在运算时会自动转换成int。

所以:b1+b2=2(这个2是int类型)

无法将int类型的数值赋值给byte类型。

同理我们可以依次证明**byte、short、char 运算时直接提升为int** 。

二、强制转换

前面我们将一个int类型的数据赋值给一个double类型,它会完成自动转换。

那反过来会怎么样?

1.2默认是double数据类型,当把一个double数据类型的数据赋值给一个int类型时,编译会报错。

这个时候我们就需要强制转换了

由此我们可以理解强制转换的概念:

  • 自动转换是**取值范围小的类型自动转换为取值范围大的类型**

  • 强制转换是**取值范围大的类型强制转换成取值范围小的类型**

转换格式:

int i=(int)1.2;
数据类型 变量名 = (数据类型)被转数据值;

也就是一个括号加上需要强制转换的数据类型,强制转换后会发现,i从1.2变成1了。

综上我们可以发现:自动转换时是Java自动执行的不需要我们参与,而强制转换需要我们自己手动执行。

转换原理:

前面我们学习了字节,其取值范围为[-128,127]。

定义一个byte类型的变量,赋值一个在它范围之外的一个数,比如257

结果为何为1?

257超过了byte类型的取值范围,默认为int类型,int类型4个字节,也就是32位。

强制转换为byte类型,会丢失前三个字节的数据。

故:强转有风险,操作需谨慎

  • 精度损失:浮点转成整数,直接取消小数点,可能造成数据损失精度。
  • 数据溢出int 强制转成byte 砍掉3个字节,可能造成数据丢失。

三、ASCII编码表

在学习二进制中我们便知道了计算机底层都是二进制数据(0和1)

那如何让计算机识别人类的文字呢?

于是就产生出了编码表的概念。

编码表 就是将人类的字符和一个十进制数进行对应起来组成一张表格。

表中每个字符都对应了一个十进制数值,如下:

记住最常见的几个:

  • 字符0对应数字48
  • 字符9对应数字57
  • 大写字母A对应65
  • 大写字母Z对应90
  • 小写字母a对应97
  • 小写字母z对应122

PS:0~9是字符时,也有对应的十进制数字

每个字符都对应一个数值。如果要进行数值运算,字符可以 代表其对应的数值,比如char转int:

int i ='0';//此时'0'是一个字符而不是一个数字
System.out.println(i);//结果是48
System.out.println('0'+1)//结果是49

总结:

全部评论

相关推荐

2025-11-07 11:05
已编辑
腾讯_csig_软件开发(实习员工)
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务