当前位置: 首页 > news >正文

字节的存储和字符的存储

字节的存储

内存中的存储

  • 基本数据类型:
    • 在Java中,byte 类型占用 1 个字节(8 位)。它的取值范围是从 -128 到 127。
    • 存储在内存中的 byte 数据可以直接操作,例如通过数组或变量访问。
  • 数据结构:
    • byte 数组:在内存中,byte 数组是连续的字节序列。例如,byte[] bytes = new byte[10]; 分配一个长度为10 的字节数组,在内存中连续存储 10 个字节。
    • 直接内存(Direct Memory):用于高性能 I/O 操作,可以通过ByteBuffer.allocateDirect(int capacity) 分配。

文件系统中的存储

  • 二进制文件:
    • 字节数据可以直接写入文件。例如,使用 FileOutputStream 可以将字节数组写入文件。
    • 文件读取时,可以通过FileInputStream 读取字节数据。
// 写入字节到文件
byte[] data = {1, 2, 3, 4, 5};
try (FileOutputStream fos = new FileOutputStream("output.bin")) {fos.write(data);
}// 从文件读取字节
try (FileInputStream fis = new FileInputStream("output.bin")) {byte[] buffer = new byte[5];int bytesRead = fis.read(buffer);
}

字符的存储

内存中的存储

  • 基本数据类型:
    • 在Java中,char 类型占用 2 个字节(16 位),使用 UTF-16 编码。它的取值范围是从 \u0000\uFFFF
    • 存储在内存中的 char 数据可以通过数组或变量访问。
  • 数据结构:
    • char 数组:在内存中,char 数组是连续的字符序列。例如,char[] chars = new char[10]; 分配一个长度为10 的字符数组,在内存中连续存储 10 个字符(20 个字节)。
  • 字符串(String):
    • String 是一个不可变的字符序列,内部使用 char 数组存储数据。每个 String 对象有一个 char数组和一个用于缓存哈希码的整型变量。
// 字符和字符串
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chars);

文件系统中的存储

  • 文本文件:
    • 字符数据可以通过字符流(例如 FileReaderFileWriter)写入和读取文件。
    • 字符编码(例如UTF-8、ISO-8859-1)决定了字符在文件中的存储方式。
// 写入字符到文件
String content = "Hello, world!";
try (FileWriter writer = new FileWriter("output.txt")) {writer.write(content);
}// 从文件读取字符
try (FileReader reader = new FileReader("output.txt")) {char[] buffer = new char[20];int charsRead = reader.read(buffer);String contentRead = new String(buffer, 0, charsRead);
}

字节与字符之间的转换

  • 字符编码:将字符转换为字节时,编码方式非常重要。例如 UTF-8 编码将字符映射为一个或多个字节,而 ISO-8859-1编码则将每个字符映射为单个字节。
// 字符串转换为字节数组
String str = "Hello, world!";
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);// 字节数组转换为字符串
String decodedStr = new String(bytes, StandardCharsets.UTF_8);

详细总结

  • 字节(Byte):
    • 基本数据类型 byte 占用 1 个字节,取值范围从 -128 到 127。
    • 在内存中,字节可以通过数组或直接内存存储和访问。
    • 在文件系统中,字节以二进制形式存储,常用于图像、音频和其他二进制数据。
  • 字符(Character):
    • 基本数据类型 char 占用 2 个字节,使用 UTF-16 编码。
    • 在内存中,字符可以通过数组或字符串存储和访问。
    • 在文件系统中,字符以文本形式存储,字符编码决定了字符的存储方式。
http://www.lryc.cn/news/415199.html

相关文章:

  • Markdown插入Base64格式的图片,无需图床,稳定保存
  • weblogic 连接gaussdb测试数据源是否联通
  • 如何成为全域运营商?掌握这2种申请方式就够了!
  • @ConfigurationProperties加在方法上
  • 使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正
  • 合并重叠的区间
  • docker和运维
  • 苍穹外面day13(day10)---订单状态定时处理、来单提醒和客户催单
  • RCE和php文件上传
  • nextjs 实现TodoList网页应用案例
  • U盘格式化了怎么恢复数据?教你U盘恢复妙招
  • 化工厂室内外4G/5G+蓝牙+GPS/北斗RTK人员定位系统解决方案
  • 【知识跨境电商API接口丨python数分实战】国际电商平台用户成交转化分析
  • 【SpringBoot】Java对象级联校验
  • 【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)
  • CSS实现元素hover时背景色拉伸渐变
  • Activity收不到bundle值
  • ZBrush
  • 【多线程-从零开始-贰】线程的构造方法和常见属性
  • 力扣:100379. 新增道路查询后的最短距离 I(Java,BFS)
  • 程序开发的常用设计思想
  • Qt之Gui
  • Linux操作系统之进程信号
  • 科普文:微服务之Spring Cloud Alibaba消息队列组件RocketMQ工作原理
  • 黑马头条vue2.0项目实战(五)——首页—频道编辑
  • Java:基础语法
  • 安装bedtools详细步骤和详细介绍bedtools用法
  • 21 - grace数据处理 - 补充 - 泄露误差改正 - Slepian局部谱分析法(一) - slepian分析法理论理解
  • WLAN国家码与信道顺从表
  • 行为型设计模式1:状态/策略/命令