1.数据在磁盘中的存储方式:
为了弄清楚 I/O 流 的执行原理,首先需要了解数据在磁盘中的存储方式。目前进行数据存储的磁盘分为两种:机械磁盘、固态硬盘。
1.1 机械磁盘:
其实机械硬盘的构造也不是太复杂;它读写数据主要就是靠一块磁盘盘片跟磁头。盘片一直在被电机驱动着旋转,数据在磁头上由电磁流来改变极性方式被电磁流写到磁盘上
简单说呢,就是磁盘一直旋转,然后磁头上面有电磁流,电磁流再去改变磁盘上面的磁极正负,然后数据就被留在磁盘上面了。需要读取的时候,再由磁头去磁盘上面读取相应位置的正负极
1.2 固态磁盘:
相比较于机械硬盘里面的各种机械结构,固态硬盘就没有太多的机械机构;它主要是靠FLASH芯片来作为储存数据的介质;由主控芯片来承担数据的中转,还有调配数据储存在闪存芯片上面
FLASH芯片储存数据的方式也不是太难理解,就是FLASH芯片里面分出了很多储存单元,这些储存单元里面有电子的位置;当一颗电子的位置里面没有存放电子,它就是0;如果存放了电子,它就是1
而主控芯片就是控制存放这些电子的‘大脑’,它把数据从CPU和内存那里接收过来,接收过来之后根据这些数据合理的把数据存放在相应的存储单元里面;需要读取数据时,它就从这些存储单元里面根据电子的存放情况来读出数据。
2.数据在内存中的存储方式:
数据在内存中的存储形式是以二进制 0,1 进行存储的,而具体的存储形式还是需要根据数据的类型以及编程语言的规范来决定。
这里主要针对 Java 的数据类型进行讲解。
2.1 基本数据类型:
在二进制里,最高位为符号位,用 0 和 1 来表示正负,最高位为 1 代表负数,最高位为 0 代表正数。
byte
:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127
,默认值 0short
:短整型,2个字节(16 bit),取值范围 -32768~32717,默认值 0int
:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648~2147483647
,默认值 0long
:长整型,在内存中占8个字节-2^63~2^63-1,默认值 0L
float
:浮点型,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0double
:双精度浮点型,用于存储带有小数点的数字,在内存中占8个字节,默认值0
char
:字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空boolean
:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值 false
2.2 引用数据类型:
Java语言本身不支持 C++ 中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。引用类型分3种:类,接口,数组;
- 类(Class):所有的类,无论是Java自身已经存在的,还是用户后来创建的;Objec类:它是所有类的父类,每个类都实现这个类的方法;用Object 可以定义所有的类;
- String:String类代表字符串,Java
- 接口(interface):系统自带或者用户创建的
- 数组(array):系统自带或者用户创建的