java的流对象和一些方法

方法public StringBuilder reverse()

,用于将字符序列逆序,仍然返回自身对象。 方法public String toString(),返回此序列中数据的字符串表示形式。
String一经初始化,就不会再改变其内容了。对String字符串的操作实际上是对其副本(原始拷贝)的操作,原来的字符串一点都没有改变。例如String s ="a"创建了一个字符串,s= s+“b"实际上将原来的"a"字符串对象丢弃,现在又产生了另一个字符串s+“b”(也就是"ab”)。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果将这样的操作放到循环中,会极大地影响程序的时间和空间性能,甚至会造成服务器的崩溃。
相反,StringBuilder和StringBuffer类是对原字符串本身操作的,可以对字符串进行修改而不产生副本或者产生少量的副本,因此可以在循环中使用。

为了减少对硬盘的读写次数,提高效率,通常设置缓存数组。相应地,读取时使用的方法为read(byte[ ] b);写入时的方法为write(byte[ ] b, int off, int length)。

缓冲字节流

BufferedInputStream和BufferedOutputStream这两个流是缓冲字节流,通过内部缓存数组来提高操作流的效率。在关闭流时,应该先关闭最外层的包装流,即“后开启的先关闭”。 缓存区的默认大小是8192字节,也可以使用其他的构造器来指定大小。
readLine()方法是BufferedReader特有的方法,可以对文本文件进行更加方便的读取操作。 写入一行后要记得使用newLine()方法换行。

数据流

数据流将“基本数据类型与字符串类型”作为数据源,从而允许程序以与机器无关的方式从底层输入/输出流中操作Java基本数据类型与字符串类型。 DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int、double、String等)的方法。 DataInputStream和DataOutputStream是处理流,可以对其他节点流或处理流进行包装,增加一些更灵活、更高效的功能。。如果要对某个对象进行读写操作,需要学习一对新的处理流:ObjectInputStream和ObjectOutputStream。使用对象流读写对象时,该对象必须经过序列化与反序列化.

序列化和反序列化是什么

当两个进程进行远程通信时,可能会发送各种类型的数据,无论是何种类型的数据,都是以二进制序列的形式在网络上传送。例如,可以通过HTTP协议发送字符串信息,也可以在网络上直接发送Java对象。发送方需要把这个Java对象转换为字节序列才能在网络上传送,接收方则需要把字节序列再恢复为Java对象才能正常读取。将Java对象转换为字节序列的过程称为对象的序列化。将字节序列恢复为Java对象的过程称为对象的反序列化。对象序列化的作用如下。 持久化:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中,例如休眠的实现、服务器session的持久化、hibernate持久化对象等。 网络通信:在网络上传送对象的字节序列,例如服务器之间的数据通信、对象传递等。

ObjectInputStream代表对象输入流,它的readObject()方法可以从一个源输入流中读取字节序列,再将其反序列化为一个对象并返回。
只有实现了Serializable接口的类的对象才能被序列化。Serializable接口是一个空接口,只起标记作用。

猜你喜欢

转载自blog.csdn.net/qq_41358574/article/details/111659826