三种操作字符串
String StringBuffer StringBuilder
StringBuffer 线程安全的可变字符序列,耗费系统资源(独占资源)
StringBuilder 线程不安全,节省系统资源
StringBuffer 和 StringBuilder都是可变的字符序列,操作StringBuffer StringBuilder的方法,一般没有返回值
String 线程不安全的 不可变的字符序列(不能修改字符串本身)
StringBuffer 和 StringBuilder的常用方法
1.拼接
关键字 append
public static void fun1() {
// 创建一个StringBuffer对象
StringBuffer sb = new StringBuffer();
// 容量 默认容量16
System.out.println(sb.capacity());
// 长度
System.out.println(sb.length());
// 拼接
sb.append("wanglong").append(false);
System.out.println(sb);
// StringBuffer转换成 字符串类型
String string = sb.toString();
System.out.println(string);
}
2.插入
关键字 insert
public static void fun2() {
// 插入
StringBuffer sb = new StringBuffer("wanglong");
sb.insert(4,"da").append("nb");
System.out.println(sb);
// 修改
sb.setCharAt(1, 'x');
System.out.println(sb);
}
当有自身类型的返回值时 可以连续调用自身方法
如: sb.insert(4,"ba").append("nb");
修改 : setCharAt(index,'char')
3.删除
关键字 delete
public static void fun3() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("wanglong");
// 删除 留头不留尾 实际删除[0,4)
// 传入的结束坐标 > 字符串长度 相当于清空字符串
stringBuffer.delete(0, 4);
System.out.println(stringBuffer);
// 注意 直接传入的是 要删除的字符的角标
stringBuffer.deleteCharAt(1);
System.out.println(stringBuffer);
// 获取stringBuffer中的字符
char c = stringBuffer.charAt(1);
System.out.println(c);
// 字符数组 转化成 stringBuffer对象
char[] arrry = {'a','b','c'};
String string = String.valueOf(arrry);
System.out.println(string);
StringBuffer sb = new StringBuffer(string);
System.out.println(sb);
}
删除单个字符: deleteCharAt(index)
获取单个字符 CharAt(index)
字符数组转化成StringBuffer对象
1️⃣先将 字符数组 转化成 字符串型
char[] arrry = {'a','b','c'};
String string = String.valueOf(arrry);
2️⃣再将字符串型转化为StringBuffer对象
StringBuffer sb = new StringBuffer(string);
System.out.println(sb);
4.反转
关键字 reverse
public static void fun4() {
//键盘输入一个字符串 将字符串反转
System.out.println("请输入字符串");
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
// 转换成StringBuffer对象
StringBuffer sb = new StringBuffer(string);
// 反转
sb.reverse();
System.out.println(sb);
}
字符串转化成StringBuffer对象
StringBuffer sb = new StringBuffer(string);
5.替换
关键字 replace
public static void fun5() {
// 替换
StringBuffer sb = new StringBuffer();
sb.append("wanglong");
sb.replace(0, 4, "lixiao");
System.out.println(sb);
}
替换: replace(start , end , "string")
6.string与StringBuffer的相互转换
(String转成StringBuffer) 构造方法
String string = "javalihaoning";
StringBuffer stringBuffer = new StringBuffer(string);
StringBuffer stringBuffer = new StringBuffer("lihaoningjava");
String str = stringBuffer.tostring();
三个操作字符串的类 当做参数时的效果
字符串当参数时 和基本数据类型一样 值传递
StringBuffer 和 StringBuilder 是地址传递
基本数据类型的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
给基本数据类型增加包装类 可以增加成员方法和静态方法
方便调用 功能进行了扩展
// 创建一个Integer
Integer n1 = new Integer(10);
// 转化成数字
int i = n1.intValue();
System.out.println(i);
Integer n2 = 10; // 自动装箱 Integer.valueOf(10);
这个过程中 会根据数值创建出一个 数值为10的Integer对象,这就是装箱
// 运算的时候 会进行自动拆箱 n2.intValue();
int sum = n2 + 5; // 不同类型可以相加 系统在执行中自动进行了装箱、拆箱处理
System.out.println(sum);
拆箱 就是自动将包装类转换为基本数据类型
Integer i = 10; // 装箱
int n = i; // 拆箱
简单一点说,装箱就是 自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型
集合 collection
集合同数组一样,也是一种容器 分为 单列集合 和 双列集合
因为数组的长度一旦确定就无法更改,而且数组中只能保存相同数据类型的元素 存在弊端 所以有了集合
集合的长度可变,可以存放不同类型的元素,但是集合中只能存放 引用类型(对象类型)
创建一个集合:
Collection collection = new ArrayList(); // 需要多态的形式创建
每当向集合中存储基本数据类型的时候 系统会自动装箱成对应的包装类collection.add("a"); // 向集合中存放元素
collection.size(); // 获取元素个数
collection.contains("x"); // 判断集合中是否含有元素x 并返回一个布尔值
collection.remove("y"); // 删除元素y
collection.isEmpty(); // 判断集合是否为空
Object[] array = collection.toArray(); // 集合转为数组
collection.clear(); // 清空数组