I/O

简介: I/O

I/O


序列化

对象持久化

在 Java 程序中所创建的对象都保存在内存中,一旦 JVM 停止运行,这些对象都将会消失。因此以下两种情况必须通过序列化实现:

  1. 需要把对象持久化保存在文件中,在 JVM 重启后能够继续使用。
  2. 通过网络传送对象信息,在多个 JVM 间共享对象。

Serializable 接口

在类中声明实现 Serializable 接口,表示允许 Java 程序对这个类的对象序列化:JVM 会将对象的成员变量保存为一组字节,这些字节可以再被 JVM 组装成对象。对象序列化只保存的对象的成员变量,且不会关注类中的静态变量。

  1. transient 字段:默认序列化机制就会被忽略。
  2. private 字段:序列化后不会被保护,任何 JVM 都可读取。
//person类的读入读出
//对于 class Person implements Serializable
        ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream(file));
        Person person = new Person("John", 101, Gender.MALE);
        oout.writeObject(person);
        oout.close();
        ObjectInputStream oin = new ObjectInputStream(new FileInputStream(file));
        Object newPerson = oin.readObject(); // 没有强制转换到Person类型
        oin.close();Copy to clipboardErrorCopied
复制代码

标准输入/输出

标准输入流 System.in

读取标准输入设备数据(键盘),每次输入将以换行符结束。数据类型为 InputStream。

char c = (char)System.in.read();   // 读取单个输入字符,返回其 ASCII 值(int)
byte[] b = new byte[20];
System.in.read(b);                 // 读取输入定长字符组,返回字符个数(int)Copy to clipboardErrorCopied
复制代码

标准输出流 System.out

向标准输出设备输出数据(控制台)。数据类型为 PrintStream。

System.out.print("hello");                         // 输出数据
System.out.println("hello");                       // 输出数据并换行Copy to clipboardErrorCopied
复制代码

格式化输出

通过 printf 方法可以输出指定格式数据:其中 %d 表示整型数字, %f 表示浮点型数字, %% 表示百分号。

在百分号后加入特殊符号,可以指定数据的显示类型。

符号 作用 示例 效果
+ 为正数或者负数添加符号 ("%+d",99) +99
2 位数(默认右对齐) ("%4d", 99) __99
左对齐 ("%-4d", 99) 99__
0 数字前补0 ("%04d", 9999) 0099
, 以“,”对数字分组 ("%,d", 9999) 9,999
.2 小数点后精确位数 ("%5.2f", 9.999) _9.99
System.out.printf("The number is %+,9.3f", PI);  // 输出指定格式数据



目录
相关文章
|
Linux
项目总结:i.mx6ull基于S485控制外设
项目总结:i.mx6ull基于S485控制外设
688 1
项目总结:i.mx6ull基于S485控制外设
|
SQL 算法 关系型数据库
PostgreSQL求解最短路径
PostgreSQL求解最短路径
1639 0
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的体育场馆预约管理系统
基于Java+Springboot+Vue开发的体育场馆预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的体育场馆管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
75 2
基于Java+Springboot+Vue开发的体育场馆预约管理系统
|
3月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
|
3月前
|
JSON API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
92 6
|
7月前
|
应用服务中间件 Android开发
Eclipse中启动tomcat后,无法访问localhost:8080(HTTP Status 404)
Eclipse中启动tomcat后,无法访问localhost:8080(HTTP Status 404)
203 0
|
缓存 网络协议 算法
TCP粘包、拆包原因与解决方案
TCP粘包、拆包原因与解决方案
273 0
|
存储 人工智能 安全
鲲鹏系列五: DevKit开发全系列工具技术要点总结
摩尔定律发展趋势的逐渐放缓,让算力和性能陷入一系列发展瓶颈,市场对创新架构的需求日益加深,计算平台的创新之战一触即发
727 0
鲲鹏系列五: DevKit开发全系列工具技术要点总结
|
Unix 数据库连接 调度
猿创征文|python gevent 执行MySQLdb/mysqlclient连接卡住解决方案
猿创征文|python gevent 执行MySQLdb/mysqlclient连接卡住解决方案
331 0
猿创征文|python gevent 执行MySQLdb/mysqlclient连接卡住解决方案
|
Java 程序员 Apache
免费申请和使用IntelliJ IDEA商业版License指南
IntelliJ IDEA是广受Java开发者喜爱的工具,其商业版的价格十分昂贵,现在有机会免费获取IntelliJ IDEA的正版License,您是否心动呢?咱们一起行动吧。
515 0
免费申请和使用IntelliJ IDEA商业版License指南