我们先来回顾一下前面学的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字符串等。
数据类型转换分为两种
- 自动类型转换(也叫隐式转换)
条件:数据范围小的--->数据范围大的
2.强制类型转换(也叫显示转换)
条件:数据范围大的--->数据范围小的
格式: 范围小的数据类型 变量名=(范围大的数据类型)原本范围大的数据
注意事项:强制类型转换一般不推荐使用,因为有可能发生精度损失和数据溢出。
示例如下:
![d4ff768fb70771dfa5afa6745b1ccb0c.png](https://i-blog.csdnimg.cn/blog_migrate/07023ba581d85c8827b956e898c7ea21.jpeg)
![d6d53459d21227785379bb87a0abc612.png](https://i-blog.csdnimg.cn/blog_migrate/3c10eb519d8a93901da49d2c1388593b.png)
数据范围大的转化为数据范围小的,当需要转化的数本身不超过数据范围小的范围时,是正常的。当超过了,之后,数据就溢出了,不再是原来的数值了,已经是物是人非了,如下图:
![80522828f056195941db08080e9bf542.png](https://i-blog.csdnimg.cn/blog_migrate/e7fa6558b102f155c08a594d18bfd437.jpeg)
![bc9aceddb9a93cf2737965e9e6c6e6c4.png](https://i-blog.csdnimg.cn/blog_migrate/087f8b31c716dc8a3e5a506a23d5c2af.jpeg)
精度损失例子:
![ac0dfa32b0a6fbfa10a7d11ad88c924c.png](https://i-blog.csdnimg.cn/blog_migrate/ccb79770d092cf81497613f719d42ea9.jpeg)
![1d426def1a7d48cee477aed4bec854a4.png](https://i-blog.csdnimg.cn/blog_migrate/5bc44f0f36c138dfef0bb1a81ed06ebe.png)
3.5变成了3,这并不是四舍五入,而是所有的小数位都会被舍掉。
byte、short、char这三种类型都可以发生数学运算,当他们发生数学运算的时候,都会首先转化为int再进行运算。
例如:
![dbe5a930e2c284c89b28fcf64ce4d905.png](https://i-blog.csdnimg.cn/blog_migrate/76d62796cf23a0f16537f3beaa3c7307.png)
byte和short、char进行运算时会首先转化为int再进行运算,上面一个byte一个short,一个2一个3 首先会自动被提升为int类型,在进行运算就是int+int结果还是int,所以需要int类型的数据来接收。
问题:
‘1’+1=?=====>答案是50
![f54e1e1d82a3a16898981ddc98b155a2.png](https://i-blog.csdnimg.cn/blog_migrate/b5d029fb8152d27aef7a811c7ef91c1a.png)
![8139c1fbe05dbc81f91f3aba9fd86b31.png](https://i-blog.csdnimg.cn/blog_migrate/7352191bac565d4f65978bb25379d9fc.png)
嗯???为什么呢?大家不要看错了,这是一个字符'1'而不是字符串"1",大家都知道字符串和任何东西相加。那肯定是拼接“11”,但为什么字符1加上int的1等于50 呢?
既然结果等于50,那么字符1 是等于49 的,也就是说‘1’字符1被当成了49来处理了。
首先我们知道计算机当中一切的数据全都是二进制的,就是0和1。比如计算机上的电影、音乐、游戏这些文件全都是二进制。所以这个字符1 底层也是二进制。 计算机底层会用一个二进制的数字来代替 字符1,就是49。
一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字。
那这些规则是怎么定的?下面有一个ASCII码表
![a53612bfc96438a96ce20331463fdaf2.png](https://i-blog.csdnimg.cn/blog_migrate/bb11fdc660dcf3331099594e1b4875cc.jpeg)
可以看到字符1 对应的就是会被计算机翻译成49。
好了今天的学习差不多到这里了,后续诸如流程控制语句、循环、方法等就不再赘述,语言只是工具而基础是相通的,我们只抽出来不会和生疏的薄弱的进行学习和巩固,后续将加快进度学习中高级知识。
加油,愿举匏樽以相属,共进退。