StringBuffer:就是字符串缓冲区
用于存储数据的容器。
特点:
1.长度是可变的。
2.可以存储不同类型的数据
3.最终要转成字符串进行使用
功能:1.添加 StringBuffer append(data);
StringBuffer insert(index,data);
2.删除 StringBuffer delete(start,end);包含头,不包含尾
StringBuffer deleteCharAt(int index);删除指定位置的元素
3.查找 char charAt(index);
int indexOf(string);
int lastIndexOf(string);
4.修改 StringBuffer replace(start,end,string);
void setCharAt(index,char);
Vector:内部是数组数据结构,是同步的。增删,查询都很慢!
ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。
泛型的限定:
? extends E: 接收E类型或者E的子类型对象。上限
一般存储对象的时候用。比如 添加元素 addAll.
? super E: 接收E类型或者E的父类型对象。 下限。
一般取出对象的时候用。比如比较器。
需要唯一吗?
需要:Set
需要制定顺序:
需要: TreeSet
不需要:HashSet
但是想要一个和存储一致的顺序(有序):LinkedHashSet
不需要:List
需要频繁增删吗?
需要:LinkedList
不需要:ArrayList
properties集合中存储的都是string类型的键和值
最好使用它自己的存储和取出的方法来完成元素的操作
转换流:
InputStreamReader :字节到字符的桥梁。解码。
OutputStreamWriter:字符到字节的桥梁。编码。
流的操作规律:
之所以要弄清楚这个规律,是因为流对象太多,开发时不知道用哪个对象合适。
想要知道开发时用到哪些对象。只要通过四个明确即可。
1,明确源和目的(汇)
源:InputStream Reader
目的:OutputStream Writer
2,明确数据是否是纯文本数据。
源:是纯文本:Reader
否:InputStream
目的:是纯文本 Writer
否:OutputStream
到这里,就可以明确需求中具体要使用哪个体系。
3,明确具体的设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4,是否需要其他额外功能。
1,是否需要高效(缓冲区);
是,就加上buffer.
2,转换。
transient:非静态数据不想被序列化可以使用这个关键字修饰。
用于存储数据的容器。
特点:
1.长度是可变的。
2.可以存储不同类型的数据
3.最终要转成字符串进行使用
功能:1.添加 StringBuffer append(data);
StringBuffer insert(index,data);
2.删除 StringBuffer delete(start,end);包含头,不包含尾
StringBuffer deleteCharAt(int index);删除指定位置的元素
3.查找 char charAt(index);
int indexOf(string);
int lastIndexOf(string);
4.修改 StringBuffer replace(start,end,string);
void setCharAt(index,char);
Vector:内部是数组数据结构,是同步的。增删,查询都很慢!
ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。
泛型的限定:
? extends E: 接收E类型或者E的子类型对象。上限
一般存储对象的时候用。比如 添加元素 addAll.
? super E: 接收E类型或者E的父类型对象。 下限。
一般取出对象的时候用。比如比较器。
需要唯一吗?
需要:Set
需要制定顺序:
需要: TreeSet
不需要:HashSet
但是想要一个和存储一致的顺序(有序):LinkedHashSet
不需要:List
需要频繁增删吗?
需要:LinkedList
不需要:ArrayList
properties集合中存储的都是string类型的键和值
最好使用它自己的存储和取出的方法来完成元素的操作
转换流:
InputStreamReader :字节到字符的桥梁。解码。
OutputStreamWriter:字符到字节的桥梁。编码。
流的操作规律:
之所以要弄清楚这个规律,是因为流对象太多,开发时不知道用哪个对象合适。
想要知道开发时用到哪些对象。只要通过四个明确即可。
1,明确源和目的(汇)
源:InputStream Reader
目的:OutputStream Writer
2,明确数据是否是纯文本数据。
源:是纯文本:Reader
否:InputStream
目的:是纯文本 Writer
否:OutputStream
到这里,就可以明确需求中具体要使用哪个体系。
3,明确具体的设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4,是否需要其他额外功能。
1,是否需要高效(缓冲区);
是,就加上buffer.
2,转换。
transient:非静态数据不想被序列化可以使用这个关键字修饰。