StringBuffer和StringBuilder
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
// 创建一个StringBuffer 对象
StringBuffer sb = new StringBuffer();
1.拼接
sb.append("loveme");
System.out.println(sb);
2.插入
sb.insert(4, "d").append("y");
System.out.println(sb);
3.修改
sb.setCharAt(2, 'x');
System.out.println(sb);
4. 直接传入的是要删除的字符的角标
sb.deleteCharAt(2);
System.out.println(sb);
5.反转
sb.reverse();
System.out.println(sb);
6.删除 传入结束坐标如果大于字符串的长度,相当于清空字符串
sb.delete(0, 1);
System.out.println(sb)
7.获取 StringBuffer中的字符
char c = sb.charAt(1);
System.out.println(c);
8.替换
sb.replace(0, 4, "you");
System.out.println(sb);
9.StringBuffer 转换成 字符串类型
String string = sb.toString();
System.out.println(string);
集合
集合:或者叫容器,是一个包含多个元素的对象
集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
数组: 存储同一种数据类型的集合容器.
数组的特点:
1. 只能存储同一种数据类型的数据。
2. 一旦初始化,长度固定。
3. 数组中的元素与元素之间的内存地址是连续的。
注意: Object类型的数组可以存储任意类型的数据。
/ 例子:
public static void main(String[] args) {
// 创建一个集合 保存3个学生 打印学生姓名
Collection collection = new ArrayList();
collection.add(new Student("p1",11));
collection.add(new Student("p2",12));
collection.add(new Student("p3",13));
// 集合转数组
// 向上转型
Object[] array = collection.toArray();
// 向下转型
// 需要把数组的每一个对象都转化成Student类型
// Student[] students = (Student[])array; 错误转法
for (int i = 0; i < array.length; i++) {
// 将数组中的每一个对象 转换
Student s = (Student)array[i];
System.out.println(s.getName());
}
}