字符串常量:String类
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间
字符串变量:StringBuffer 和 StringBuilder 类
StringBuffer类:
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量
该类多用与多线程操作字符串
执行速度慢
StringBuilder类:
StringBuilder类也是可变类,但是线程不安全
多用于单线程操作字符串
执行速度慢
IO流
复习
根据流向分为:输入流、输出流
根据数据类型分类为:
字节流:以字节为单位读写数据的流
我们必须明确一点的是,一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。
字符流:以字符为单位读写数据的流
因为数据编码的不同,因而有了对字符进行高效操作的流对象,字符流本质其实就是基于字节流读取时,去查了指定的码表。
而字节流直接读取数据会有乱码的问题(读中文会乱码,因为一个中文字符占用多个字节存储。
(字节流有处理乱码的方法,但是比较麻烦,所以就有了字符流)
从另一角度来说:字符流 = 字节流 + 编码表
输入流 | 输出流 | |
---|---|---|
字节流(用来处理图片、视频等) | 字节输入流 InputStream | 字节输出流 OutputStream |
字符流(专门用来处理文本文件) | 字符输入流 Reader | 字符输出流 Writer |