三种操作字符串
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(); // 清空数组