作为程序员,对数据类型应该是一清二楚的,但是有些时候长时间不用难免会出现记忆混淆错误的时候,尤其是加班加点的时候。本人记忆不好,虽然当时都记住了,但是一段时间不用,就会忘的一干二净,这是个忧伤的故事。在这里整理一下关于数据类型的知识。
1.基础中的基础:位,字,字节
位(bit):是电子计算机中最小的数据单位。每一位的状态只能是0或1。
字节(Byte):8个位构成1个"字节",它是存储空间的基本计量单位。
字:"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。
KB:只是这时K表示1024,也就是2的10次方。1KB表示1K个Byte,也就是1024个字节。
KB 1KB=1024B
MB 1MB=1024KB
GB 1GB=1024MB
TB 1TB=1024GB
计算机的性能越强,一次运算所能处理的“位”越多,例如16位计算机一次运算能处理16个“位”,即两个“字节”,称为一个“字”。所以,一个“字”有几个“字节”构成和计算机的型号有关。例如32位计算机中,一个“字”就是四个“字节”。
Java中数据类型知识
Java中的简单类型从概念上分为四种:实数、整数、字符、布尔值。但是有一点需要说明的是,Java里面只有八种原始类型,其列表如下:
实数:double、float
整数:byte、short、int、long
字符:char
布尔值:boolean
复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:所有的简单数据类型不存在“引用”的概念,简单数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂数据类型都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。