JAVA中两个char类型相加_5.16--java数据类型转换及杂记

我们先来回顾一下前面学的java中的数据类型:

java中数据类型分为基本数据类型和引用型数据类型

8种基本数据类型(值类型)

整型:byte(-128~127)、short、int、long long数据结尾要加“L”【C#中byte的数据范围为:(0-255)】

浮点型:float、double float数据结尾要加“F”

字符型:char

布尔型:boolean

除了以上8中基本数据类型之外,其余的数据均为引用型数据类型

而在C#中,除了以上基本的数据类型为值类型外,值类型还包括:枚举enum(java中enum为引用类型数据),结构体(struct)等。

引用类型都包括类class、数组、接口、对象、string字符串等。

数据类型转换分为两种

  1. 自动类型转换(也叫隐式转换)

条件:数据范围小的--->数据范围大的

2.强制类型转换(也叫显示转换)

条件:数据范围大的--->数据范围小的

格式: 范围小的数据类型 变量名=(范围大的数据类型)原本范围大的数据

注意事项:强制类型转换一般不推荐使用,因为有可能发生精度损失和数据溢出。

示例如下:

d4ff768fb70771dfa5afa6745b1ccb0c.png

d6d53459d21227785379bb87a0abc612.png

数据范围大的转化为数据范围小的,当需要转化的数本身不超过数据范围小的范围时,是正常的。当超过了,之后,数据就溢出了,不再是原来的数值了,已经是物是人非了,如下图:

80522828f056195941db08080e9bf542.png

bc9aceddb9a93cf2737965e9e6c6e6c4.png

精度损失例子:

ac0dfa32b0a6fbfa10a7d11ad88c924c.png

1d426def1a7d48cee477aed4bec854a4.png

3.5变成了3,这并不是四舍五入,而是所有的小数位都会被舍掉

byte、short、char这三种类型都可以发生数学运算,当他们发生数学运算的时候,都会首先转化为int再进行运算。

例如:

dbe5a930e2c284c89b28fcf64ce4d905.png

byte和short、char进行运算时会首先转化为int再进行运算,上面一个byte一个short,一个2一个3 首先会自动被提升为int类型,在进行运算就是int+int结果还是int,所以需要int类型的数据来接收。

问题:

‘1’+1=?=====>答案是50

f54e1e1d82a3a16898981ddc98b155a2.png

8139c1fbe05dbc81f91f3aba9fd86b31.png

嗯???为什么呢?大家不要看错了,这是一个字符'1'而不是字符串"1",大家都知道字符串和任何东西相加。那肯定是拼接“11”,但为什么字符1加上int的1等于50 呢?

既然结果等于50,那么字符1 是等于49 的,也就是说‘1’字符1被当成了49来处理了。

首先我们知道计算机当中一切的数据全都是二进制的,就是0和1。比如计算机上的电影、音乐、游戏这些文件全都是二进制。所以这个字符1 底层也是二进制。 计算机底层会用一个二进制的数字来代替 字符1,就是49。

一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字。

那这些规则是怎么定的?下面有一个ASCII码表

a53612bfc96438a96ce20331463fdaf2.png

可以看到字符1 对应的就是会被计算机翻译成49。

好了今天的学习差不多到这里了,后续诸如流程控制语句、循环、方法等就不再赘述,语言只是工具而基础是相通的,我们只抽出来不会和生疏的薄弱的进行学习和巩固,后续将加快进度学习中高级知识。

加油,愿举匏樽以相属,共进退。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值