方法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的流对象和一些方法相关推荐

  1. Java中String对象的replaceAll方法调用性能优化小技巧

    Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...

  2. (Java)IO流对象(三)字符流

    [字符流] Writer()    所有字符输出流的超类                  | --- OutputStreamWriter   转换流    字符转字节 | --- FileWrit ...

  3. (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流

    [Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...

  4. Java使用String对象的split()方法分割字符串的小坑

    Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符.当分割符是 . 或者是 | 时,必须使用 \ 进行转义. 没有加转 ...

  5. java类与对象(属性,方法)的使用

    ---恢复内容开始--- 类和对象是java编程中很重要的应该面向对象的一课,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语言的基础 ...

  6. Java通用判断对象是否相等方法

    算法: 1. nul l== null 2. null != 任何对象 3. 复杂对象直接调用Object的equals()方法,若相等直接返回,否则4 4.遍历对象的所有Field, 递归比较每个F ...

  7. java取json对象的值_java的JsonObject对象提取值方法

    实例如下所示: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba. ...

  8. 1.7 Java字符流的使用:字符输入/输出流、字符文件和字符缓冲区的输入/输出流

    尽管 Java 中字节流的功能十分强大,几乎可以直接或间接地处理任何类型的输入/输出操作,但利用它却不能直接操作 16 位的 Unicode 字符.这就要用到字符流.本节将重点介绍字符流的操作. 字符 ...

  9. java IO流小结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

最新文章

  1. 知道了05后的隐藏技能之后,我酸了…​
  2. Strusts2 高危漏洞又来了,老项目自查起来!
  3. careercup-高等难度 18.5
  4. python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)
  5. C语言中图形方式界面怎么,「分享」C语言如何编写图形界面
  6. 【tomcat】手动部署动态JavaWeb项目到tomcat
  7. vuex+element 从后台获取数据写导航栏-菜单权限
  8. Thinkphp 数据库配置参数
  9. java绘制半透明图片_如何使绘制的图像在Java中透明
  10. 2017年云主机性能测评报告
  11. little bird
  12. Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
  13. BZOJ 3359: [Usaco2004 Jan]矩形( dp )
  14. c语言 waveout用法,用C语言发声
  15. Android 集成Unity项目
  16. NP、OSPF监测调试
  17. center os 安装 mysql_MySQL数据库之center os 7 Mysql 安装
  18. 分享常见的视频加密算法原理及其优缺点
  19. uni 加入图标_uniapp如何更改图标
  20. formula 返回list_Formula element (List)

热门文章

  1. 【mathematical statistics】3 interval estimate
  2. mysql超级_Mysql 超级快速入门
  3. 翻译职称计算机能力,2018年职称计算机word2003考点辅导:用好Office2003中的翻译功能...
  4. 主成分分析计算机如何实现,主成分分析(PCA)原理及R语言实现及分析实例
  5. 二十八、Node.js中的RESTful API和接口设计
  6. 为什么hive需要mysql作为数据库_Hive安装(本地独立模式,MySql为元数据库)
  7. 北京/苏州内推 | 微软亚洲互联网工程院招聘算法工程师/应用科学家
  8. 在TensorFlow和PaddleFluid中使用多块GPU卡进行训练
  9. 【深度学习】通过python画出loss曲线
  10. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理