想要弄明白数据类型转换,首先要知道有哪些数据类型。从数据类型的复杂角度上说,数据类型有两类:简单数据类型和复杂数据类型其中复杂数据类型是由简单数据类型和一些规则组成的,在之后的讲解中我们会讲到,现在我们先了解简单数据类型。
对于简单数据类型来说,又分为整数类型,浮点数类型和非数值类型。
整数类型:
sbyte 8位有符号整数 -128~127
byte 8位无符号整数 0~255
short 16位有符号整数 -32768~32767
ushort 16位无符号整数 0~65535
int 32位有符号整数 -2147483648~2147483647
uint 32位无符号整数 0~4294967295
long 64位有符号整数 -9223372036854775808~9223372036854775807
ulong 64位无符号整数 0~18446744073709551615
这里我们看到不同的数据类型代表的数字有的是8位的有的是16位的,那么这个位是啥意思?
我们都知道,日常生活中,我们使用的是0~9这样的十进制计数方法。
但是我们的计算机是由数字集成电路搭建的,而数字集成电路元器件最典型的两个状态就是"开"和“关”,于是我们就用0和1模拟这两个状态,就出现了二进制计数方法。
每个0或1就是一个位,其中8位的意思是用8个连续的0或者1来表示整数,比如10换算成十进制就是2、100换算成十进制就是4、11111111换算成十进制数字就是255。
注:我们之后会专门有一节来讲计算机是怎么用“位”来表示数据的,以及是怎么进行计算的。
我们看到一些整形的定义中有有符号整数和无符号整数这又是什么意思呢?
我们举例来说:
我们的8位的意思,其实在说可以存储数据的个数,也就是8位可以存储256个数。
用byte(8位无符号整数)举例,意思就是说,这8位都是数据存储位,所以它只能表示从0到255的正数(一共256个数)。
但是sbyte(8位有符号整数),意思是说,将8位的最高位变成符号位,其余的7位作为数据存储的位,这样就相当于将可以存储的256个数劈成了两半,一半用来表示正数,一半用来表示负数,但是整体还是256个数。因为负数前面需要有个一“-”号,所以就叫做有符号整数喽。
不过我们也要注意,数据类型在基类库中的对应:
sbyte System.SByte
byte System.Byte
short System.Int16
ushort System.UInt16
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
通常我们的编写环境中int和long所可以表示的数据区间基本足够我们使用,但是如果有些程序对存储有特殊要求,或者内存利用率要求比较高的时候,我们才会主动使用byte、short等数据范围比较小的数据类型。比如计算机处理颜色的时候,就需要使用byte,因为颜色存储的就是0~255之间的数,这就是一个典型对存储有特殊要求的情况。
在实际编程过程中在使用无符号int或比int范围大的整数类型的时候,声明变量是有要求的:
uint u = 123U
uint u = 123u
long l = 123L
long l = 123l
ulong ul = 123UL
ulong ul = 123ul
但是在使用过程中,建议大家用大写的结尾标识,因为在编码的时候很容易将小写的l看成数字1,如果换成大写的L就不容易看错。
浮点类型有:
float System.Single 32 位浮点数
double System.Double 64 位浮点数
decimal System.Decimal 128 位浮点数
浮点数主要用于处理含有小数的数值,其中float和double通常用于科学计算和图形计算,但是decimal主要用于金融计算,我们可以理解成,当普通算算术的时候使用float和double,但是算钱的时候,比如一些会计软件,证券软件时候一定要用decimal
不过在声明的时候也是有要求的:
float f=123.123f
float f=123.123F
double d=123.123d
double d=123.123D
decimal m=123.1232m
decimal m=123.123M
在这里仍然建议大家用大写字母的后缀,因为看的清楚呀!
三种简单非值类型:
char System.Char 一个Unicode字符,存储0~65536之间的数
bool System.Boolean 布尔值,true或false
string System.String 一组字符
Unicode字符的意思可以理解成,用数字代表字符,也就是字符在计算机中存储的方式是数字,当我们使用字符的时候,也就是在使用该字符在计算机中对应的数字,比如:
这里我们看到,原来计算机中用97代表字符a,用98代表字符b。但是在这里我们可能会产生一个疑问,这里的char虽然在定义上以字符形式出现的,但是实际上操作的就是数字,那么字符是不是可以进行四则运算?那我们就试试:
哈哈,这个就证明了字符是可以进行运算的,所以屏幕前的小伙伴当看到对字符进行运算的代码的时候不要疑惑哦!
string没有存储上限,它使用可变大小的内存,所以string没有指定存储空间,可以是由任意字符组成的字符串,不过需要注意的是声明char的时候要用英文小写单引号包括。而且只能包括一个字符,string是用双引号包括的一堆字符。
对于使用string过程中,有个特殊的知识点,我们都知道计算机中+号是进行加法运算的,但是一旦+号左右两边的操作数中有一个是字符串,那么此时的+号只起到链接的作用:
屏幕前的你,学会了吗?