我们先来回顾一下前面学的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.强制类型转换(也叫显示转换)

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

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

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

示例如下:




java比较两个set的值 java比较两个char相等_java比较两个set的值


java比较两个set的值 java比较两个char相等_字符串_02


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


java比较两个set的值 java比较两个char相等_字符串_03


java比较两个set的值 java比较两个char相等_java比较两个set的值_04


精度损失例子:


java比较两个set的值 java比较两个char相等_JAVA中两个char类型相加_05


java比较两个set的值 java比较两个char相等_字符串_06


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

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

例如:


java比较两个set的值 java比较两个char相等_数据类型_07


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

问题:

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


java比较两个set的值 java比较两个char相等_JAVA中两个char类型相加_08


java比较两个set的值 java比较两个char相等_字符串_09


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

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

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

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

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


java比较两个set的值 java比较两个char相等_字符串_10


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

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

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