个人简介
👀个人主页: 前端杂货铺
⚡开源项目: rich-vue3 (基于 Vue3 + TS + Pinia + Element Plus + Spring全家桶 + MySQL)
🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍖开源 rich-vue3 🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧
内容 | 参考链接 |
---|---|
Java基础(一) | Hello World,8种数据类型,键盘录入 |
Java基础(二) | 数组,方法,方法重载 |
Java基础(三) | 类和对象、构造方法 |
文章目录
- 前言
- String 字符串
- StringBuffer
- StringBuilder
- StringJoiner
- 总结
前言
大家好,这里是前端杂货铺。
本篇文章,我们认识字符串。
String 字符串
通过 new 创建的都是存储在堆内存中,所以 s1 和 s2 的地址并不相同,故不相等。
通过 equals 方法,我们可以只比较值而不比较地址;通过 equalsIgnoreCase 方法,我们可以忽略字符串大小写比较值。
public static void main(String[] args) {
String s1 = new String("Abc");
String s2 = "Abc";
// 基本数据类型,比较数据值
// 引用数据类型,比较地址值
System.out.println(s1 == s2); // false
// 比较对象的内容是否相等
System.out.println(s1.equals(s2)); // false
// 比较对象的内容是否相等,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2)); // true
}
StringBuffer
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
但是在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
方法 | 描述 |
---|---|
append(String s) | 将指定的字符串追加到此字符序列 |
insert(int offset, String str) | 将字符串插入此序列中 |
delete(int start, int end) | 移除此序列的子字符串中的字符 |
replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符 |
reverse() | 将此字符序列用其反转形式取代 |
StringBuffer sBuffer = new StringBuffer("hello");
sBuffer.append(" ");
sBuffer.append("world");
sBuffer.append("!");
System.out.println(sBuffer);
sBuffer.insert(5, "Java");
System.out.println(sBuffer); // helloJava world!
sBuffer.delete(7, 9);
System.out.println(sBuffer); // helloJa world!
sBuffer.replace(5, 7, "ab");
System.out.println(sBuffer); // helloab world!
sBuffer.reverse();
System.out.println(sBuffer); // !dlrow baolleh
System.out.println(sBuffer.length()); // 14
StringBuilder
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
方法 | 描述 |
---|---|
append(String s) | 将指定的字符串追加到此字符序列 |
insert(int offset, String str) | 将字符串插入此序列中 |
delete(int start, int end) | 移除此序列的子字符串中的字符 |
replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符 |
reverse() | 将此字符序列用其反转形式取代 |
StringBuilder sb = new StringBuilder("hello");
sb.append(" ").append("world").append("!");
System.out.println(sb); // hello world!
sb.insert(5, "Java");
System.out.println(sb); // helloJava world!
sb.delete(7, 9);
System.out.println(sb); // helloJa world!
sb.replace(5, 7, "ab");
System.out.println(sb); // helloab world!
sb.reverse();
System.out.println(sb); // !dlrow baolleh
System.out.println(sb.length()); // 14
StringJoiner
JDK8 出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。
StringJoiner sj = new StringJoiner("---");
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj);
StringJoiner sj2 = new StringJoiner(", ", "[", "]");
sj2.add("aaa").add("bbb").add("ccc");
int len = sj2.length();
System.out.println(len);
System.out.println(sj2);
// 转为字符串
String str = sj2.toString();
System.out.println(str);
总结
本篇文章,我们学习了字符串地址和值的比较、StringBuffer、StringBuilder、StringJoiner,认识了其各自的作用及StringBuffer 与 StringBuilder 的区别等…
好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!
参考资料:
- Java 基础(bilibili-黑马程序员)
- 菜鸟教程–Java