String
String是Java中最常用的字符串类型,它是一个不可变的字符序列。
1.优点
-
不可变性:
-
一旦创建,字符串的内容不能被修改。
-
不可变性使得
String在多线程环境中非常安全,无需额外的同步措施。 -
不可变性也使得
String可以被缓存和共享(如字符串常量池)。
-
-
丰富的API 提供了大量的方法用于字符串操作,如
substring()、replace()、split()、equals()等
2.缺点
-
内存占用较高:
-
每次修改字符串(如拼接、替换等)都会创建新的字符串对象,可能导致大量临时对象的创建和回收。
-
-
性能问题:
-
在频繁修改字符串的场景中,性能可能较低。
-
3.常见方法
//查找比较
String str = "Hello";
int index = str.indexOf("e"); // 返回 1
boolean isEqual = str.equals("hello"); // false,区分大小写
//子字符串
String sub = str.substring(1, 3); // 返回 "el"
//大小写转换
String upper = str.toUpperCase(); // 返回 "HELLO"
String lower = str.toLowerCase(); // 返回 "hello"
//分割
String[] parts = str.split("l"); // 返回 {"He", "", "o"}
StringBuilder
StringBuilder是一个可变的字符序列,用于高效地处理字符串拼接和修改操作。
1.优点
-
可变性:
-
内容可以被修改,不会创建新的对象。
-
适合频繁修改字符串的场景。
-
-
性能优化 :在单线程环境中,
StringBuilder的性能优于String,因为它避免了频繁创建新对象。
2.缺点
线程不安全,不能在多线程环境中直接使用。
3.常见方法
//拼接
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString(); // 返回 "Hello World"
//插入删除
sb.insert(5, "Java"); // 在索引 5 处插入 "Java"
sb.delete(5, 9); // 删除索引 5 到 9 的字符
//反转字符串
sb.reverse(); // 反转字符串
StringBuffer
1.优点
-
线程安全:
-
所有方法都是同步的,适合在多线程环境中使用。
-
-
可变性:
-
内容可以被修改,不会创建新的对象。
-
2.缺点
-
性能较低:
-
由于线程安全的同步机制,
StringBuffer的性能比StringBuilder更低。
-
-
不推荐在单线程中使用:
-
在单线程环境中,
StringBuilder是更好的选择
-

被折叠的 条评论
为什么被折叠?



