一、基本概念
首先,数据类型应该拆开来理解,分别是数据和类型。我们先讲什么是数据,本质上是计算机内存中的0和1,由于计算机存储的基本单位是字节(byte),最小单位是位(bit),一个节字等于8位,这些都是计算机客观存在的概念。所以,byte在计算机占8个位,bit在计算机中占1个位,由于这两个家伙所占的存储空间长度不一样,所以我们才分别命名为byte和bit,其实,这里的byte和bit就是计算机中两种不同的数据类型。
哦,原来是这样,把占据不同存储空间的数据进行分类,并分别取名,于是就出现了各种各样的数据类型。它其实指的是变量或数据在内存中所占用的空间大小和布局方式,以及该数据可以进行的操作。在计算机编程中,数据类型不仅能够决定程序的正确性和效率,还能够影响程序的可读性和可维护性。
这有点像长度单位,打个不太严谨的比方,把圆珠笔芯的直径叫1毫米,把人的指甲盖的距离叫1厘米,把一个鸡蛋的长度叫1分米,把一根适合的拐杖的长度叫1米。在C#中,占一个bit的数据长度称为bit,占8个bit的数据长度称为byte,占16个bit的数据长度称为短整型short,占32个bit的数据称为整型int,占64个bit的数据长度称为长整型long。
于是,不同的内存存储长度,就可以表示不同的数值范围。理化上讲,存储长度越长,即所占位数越多,所能表示的数值越大。
这就好比作文本,一个格子只能写一个字,一页纸就可以写一篇短文,一本厚厚的作文书就可以写一本小说。
二、数据类型的作用
为什么我们要定义不同的数据类型,从本质上,也就是说,为什么我们在使用内存时, 要将内存分成长短不一的存储空间,然后再给程序员使用?
这和酒店的房间有相似之处。本着节约思想,如果是一个人入住,开个单间就够了,如果是两个人入住,就需要开个标间,如果是三个人入住,有的酒店还会提供三人间,如果是四个人入住,那可以开两个标间,这里单间、标间和三人间就是房间的(数据)类型。如果一个人入住也开个三人间,那就有点浪费床位了。
将内存分成不同长度的存储形式,以便程序员申请内存时,选择适合的存储空间,也是为了节约计算机的资源。比如我们要存储一个人的年龄,人的年龄不可能是一个很大的数值,比如9000岁,那是传说中太监,实际开发中是不存在这种情形的。人的年龄区间一般来说是0-120,也不可能是负数。所以,用一个bit来存储,显示存不下,因为一个bit只能存0或1两个数据,而且计算机也没有将bit做为一种数据类型开放给程序员。用8个bit来存储年龄是否可以呢?我们就要看看这8个bit所能表示的数值范围了,首先是8个0,00000000=0,这是最小的情况(不考虑负数存储),然后是8个1,11111111=255,这是最大的情况,而8个bit在C#中用byte(字节)来表示,说明我们可以申请一个byte类型的内存空间来存储年龄数据,虽然120以上的数值我们也用不上,但这是C#给程序员开放的最小的数据存储类型了,它就好比酒店的单间。
我们是否可以用16个bit空间来存放年龄呢?还是先看看16个bit的数值范围,0000000000000000=0,1111111111111111=65535,在C#中short表示16位的整数,范围是0-65535。由此可见,申请一个short类型的内存空间来存储年龄,属实有点小资。
综上所述,它的作用是:
1.决定变量在内存中所占用的空间大小和布局方式。不同的数据类型在内存中所占用的空间大小是不同的,因此数据类型的选择会直接影响到程序的内存使用效率。
2.决定变量可以进行的操作。不同的数据类型可以进行的操作也是不同的,例如整型可以进行加减乘除等算数运算,而字符型则可以进行字符串拼接等操作。
3.决定程序的正确性和效率。数据类型的正确选择可以保证程序的正确性,而数据类型的选择不当会导致程序出错或者效率低下。
结论
了解计算机的数据类型,正确选择适合的数据类型,是开发高效稳健程序的关键。作为程序员,在选择数据类型时,应从下面几个因素考虑。
首先是数据的范围和精度,按需分配,根据实际需求申请不同存储长度的内存空间,避免不必要的浪费。其次,不同的数据类型在内存使作效率方面也是不同的,要了解每种数据类型的效率,最后,尽量选择简单明了的数据类型,增加程序的可读性和维护性。
我们探讨了数据类型与所占内存的长度关系之后,下一步就要了解.NET框架定义了哪些基础数据类型,这些类型被称为基元类型,它们被定义在FCL框架类库(Framework Class Library)中。由于.NET同时支持C#、F#、VB语言,所以每一种语言也有自己的数据类型,不过,通常它们与.NET框架的基元类型都有一一对应的关系。
——重庆教主 2023年12月13日