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接口是一个空接口,只起标记作用。
java的流对象和一些方法相关推荐
- Java中String对象的replaceAll方法调用性能优化小技巧
Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...
- (Java)IO流对象(三)字符流
[字符流] Writer() 所有字符输出流的超类 | --- OutputStreamWriter 转换流 字符转字节 | --- FileWrit ...
- (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流
[Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...
- Java使用String对象的split()方法分割字符串的小坑
Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符.当分割符是 . 或者是 | 时,必须使用 \ 进行转义. 没有加转 ...
- java类与对象(属性,方法)的使用
---恢复内容开始--- 类和对象是java编程中很重要的应该面向对象的一课,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语言的基础 ...
- Java通用判断对象是否相等方法
算法: 1. nul l== null 2. null != 任何对象 3. 复杂对象直接调用Object的equals()方法,若相等直接返回,否则4 4.遍历对象的所有Field, 递归比较每个F ...
- java取json对象的值_java的JsonObject对象提取值方法
实例如下所示: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba. ...
- 1.7 Java字符流的使用:字符输入/输出流、字符文件和字符缓冲区的输入/输出流
尽管 Java 中字节流的功能十分强大,几乎可以直接或间接地处理任何类型的输入/输出操作,但利用它却不能直接操作 16 位的 Unicode 字符.这就要用到字符流.本节将重点介绍字符流的操作. 字符 ...
- java IO流小结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
最新文章
- 知道了05后的隐藏技能之后,我酸了…​
- Strusts2 高危漏洞又来了,老项目自查起来!
- careercup-高等难度 18.5
- python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)
- C语言中图形方式界面怎么,「分享」C语言如何编写图形界面
- 【tomcat】手动部署动态JavaWeb项目到tomcat
- vuex+element 从后台获取数据写导航栏-菜单权限
- Thinkphp 数据库配置参数
- java绘制半透明图片_如何使绘制的图像在Java中透明
- 2017年云主机性能测评报告
- little bird
- Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
- BZOJ 3359: [Usaco2004 Jan]矩形( dp )
- c语言 waveout用法,用C语言发声
- Android 集成Unity项目
- NP、OSPF监测调试
- center os 安装 mysql_MySQL数据库之center os 7 Mysql 安装
- 分享常见的视频加密算法原理及其优缺点
- uni 加入图标_uniapp如何更改图标
- formula 返回list_Formula element (List)
热门文章
- 【mathematical statistics】3 interval estimate
- mysql超级_Mysql 超级快速入门
- 翻译职称计算机能力,2018年职称计算机word2003考点辅导:用好Office2003中的翻译功能...
- 主成分分析计算机如何实现,主成分分析(PCA)原理及R语言实现及分析实例
- 二十八、Node.js中的RESTful API和接口设计
- 为什么hive需要mysql作为数据库_Hive安装(本地独立模式,MySql为元数据库)
- 北京/苏州内推 | 微软亚洲互联网工程院招聘算法工程师/应用科学家
- 在TensorFlow和PaddleFluid中使用多块GPU卡进行训练
- 【深度学习】通过python画出loss曲线
- Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理