type
status
date
slug
summary
tags
category
icon
password
Java I/O面试题
比特、字节、字符的区别
项目 | 比特 (bit) | 字节 (byte) | 字符 (char) |
定义 | 二进制数据的最小单位,仅有0和1 | 数据存储的基本单位,通常由8个比特构成 | 编码系统中的单个字符,如字母、数字、符号 |
大小 | 1比特 = 1个二进制位 | 1字节 = 8比特 | 大小取决于编码:在Java中是2字节 (16比特) |
常见用途 | 表示开/关、真假等二进制状态 | 存储字节数据,例如文件大小或内存 | 表示文本数据,例如字母、数字、特殊符号 |
示例 | 0 或 1 | 01001010 (表示一个字节) | 'A' (在UTF-16编码中占2字节) |
在Java中 | 没有直接的bit数据类型 | byte 类型(范围 -128 到 127) | char 类型,表示单个Unicode字符 |
编码方式 | 不适用 | ASCII、UTF-8等 | Unicode (UTF-16 在Java中) |
应用场景 | 通信协议、低级别硬件控制 | 存储和处理文件、流数据等 | 字符串处理、文本文件、用户输入等 |
序列化和反序列化
- 序列化:将对象转换为二进制格式(或其他可传输格式,如JSON、XML)的过程,以便可以存储到文件中或通过网络传输
- 反序列化:将序列化的数据重新转换回对象的过程。即从文件或网络中读取二进制数据并重建对象
对象序列化需实现serializable接口,如果类中的某个字段不想被序列化,可以将其声明为 transient,它会在序列化过程中被忽略。
serialVersionUID字段的作用
1、版本控制
serialVersionUID用于验证在反序列化时,发送方和接收方的类是否兼容。当类的 serialVersionUID和序列化的对象的serialVersionUID匹配时,反序列化过程可以成功。如果不匹配,则会抛出InvalidClassException异常,表示类的版本不兼容。
2、确保反序列化的安全性
通过serialVersionUID,Java序列化机制可以确保类的结构没有发生不可兼容的改变。例如,如果类定义发生重大变化(如删除重要字段),这会导致反序列化时无法正常恢复对象的状态。serialVersionUID可以帮助检测出这些变化。
- 作者:JackJame
- 链接:https://notion.qjit1314.eu.org/article/example-3
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


