看Android项目源码了解到的不足——数据类型篇

作为程序员,对数据类型应该是一清二楚的,但是有些时候长时间不用难免会出现记忆混淆错误的时候,尤其是加班加点的时候。本人记忆不好,虽然当时都记住了,但是一段时间不用,就会忘的一干二净,这是个忧伤的故事。在这里整理一下关于数据类型的知识。

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程序具有很强移植能力的原因之一。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容