在java世界当中,数据类型分为基本数据类型与引用数据类型两大类。基本数据类型一共有八种,按照存取数据的“长相”可以再分为整型、浮点型(即小数)、字符型与布尔型。
在介绍基本数据类型之前,我们先引入比特(bit)与字节的概念。比特是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量,1字节等于8比特。举个例子来说,取二进制中的一个数1010000110100110,这个数的每一位都被称作一个比特位,共16比特,或2字节。知道了“比特”和“字节”,下面我们来介绍这八种基本数据类型。
首先介绍整型,按照存储单位的大小,分为byte、short、int和long。byte(字节型)占1个字节,即8个比特位,也就是说它取值范围为00000000~11111111,那么对应我们日常生活中的十进制就是0~511吗?答案是否定的,不然负数该怎么办。为了引入负数,程序员前辈们让这8个比特位中的第1个表示符号,令0表示正号,1表示负号,这样byte的取值范围对应十进制就成了-218-217。当需要存储的整数超过了byte的取值范围后,就要用到了剩下的三种整型基本类型——short、int、long,分别占2个字节、4个字节和8个字节,与byte相同,它们的第一个比特位都代表符号。如果我们要存储的数字更大,超过了long类型的最大值,那么我们就要将它存储在引用数据类型——BigInteger中。让我们来考虑一个问题,为什么整数要被分为四个基本类型呢?一方面是为了避免内存空间问题,尽量去压缩空间(例如一个占用内存2G的程序放在内存只有1G的手机上是不可能的);另一方面,一般情况下这四个就已经够用了~。
接下来是浮点型,按照精确程度可以被分为两种——float和double,分别占用4个字节和8个字节,其有效位数分别为8位与16位。其中,由于小数默认位double类型的,所以在声明float类型并赋值时,要在小数后面加上f或F,例如float a = 3.14f。
最后是字符型char(两个字节)和布尔型boolean(1个比特位)。char是单词“character”的缩写,不过被读作“cha(四声)”,它被用来存储一个字符,即是指我们键盘上能打出来的任何一个字或符号,注意,是一个。但由于数字既可以被认为是整数,又可以被认为是字符,故每一个字符前后各加单引号以示区分。而boolean型只存储两个值——true和false,所以只需要占用1个比特位,令0代表false,1代表true即可。