Java-String、StringBuffer、StringBuilder区别及相关面试题

这篇具有很好参考价值的文章主要介绍了Java-String、StringBuffer、StringBuilder区别及相关面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引言

在Java编程中,经常会遇到处理字符串的需求。Java提供了多个类来处理字符串,其中最常用的是String、StringBuffer和StringBuilder类。本文将介绍这三个类的基本用法和区别。

二、String类的基本介绍

String是Java中最常用的字符串类,它是不可变的,也就是说一旦被创建,它的值就不能被改变。下面是String类的一些常用方法。

2.1 创建String对象

我们可以使用双引号(“”)或者String的构造函数来创建String对象。例如:

String s1 = "Hello World!";
String s2 = new String("Hello World!");

2.2 字符串的拼接和连接

String类提供了多个方法来进行字符串的拼接和连接。例如:

String s3 = s1 + s2;  // 字符串拼接
String s4 = s1.concat(s2);  // 字符串连接

也可以对字符串常量使用 concat() 方法,如:

"我的名字是 ".concat("Runoob");

2.3 字符串的比较

String类提供了多个方法来进行字符串的比较。例如:

boolean equals = s1.equals(s2);  // 判断两个字符串是否相等
int compareTo = s1.compareTo(s2);  // 比较两个字符串的大小

2.4 字符串的截取和替换

String类提供了截取和替换字符串的方法。例如:

String substring = s1.substring(0, 5);  // 截取字符串
String replace = s1.replace("Hello", "Hi");  // 替换字符串

2.5 字符串的查找和匹配

String类提供了查找和匹配字符串的方法。例如:

int index = s1.indexOf("World");  // 查找字符串的位置
boolean startsWith = s1.startsWith("Hello");  // 判断字符串是否以指定的前缀开始
boolean endsWith = s1.endsWith("World!");  // 判断字符串是否以指定的后缀结束
boolean contains = s1.contains("l");  // 判断字符串是否包含指定的子字符串

2.6 创建格式化字符串

输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象,并且不仅仅是用于一次打印输出,format() 能用来创建可复用的格式化字符串

String str;
str = String.format("浮点型变量的值为 " +
                   "%f, 整型变量的值为 " +
                   " %d, 字符串变量的值为 " +
                   " %s", floatVar, intVar, stringVar);

API文档

JavaAPI文档-String类

三、StringBuffer类的基本介绍

StringBuffer是可变的字符串类,它可以进行字符串的修改操作。下面是StringBuffer类的一些常用方法。

3.1 创建StringBuffer对象

我们可以使用StringBuffer的构造函数来创建StringBuffer对象。例如:

StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer("Hello World!");

3.2 字符串的拼接和连接

StringBuffer类提供了多个方法来进行字符串的拼接和连接。例如:

StringBuffer sb3 = sb1.append(sb2);  // 字符串拼接
StringBuffer sb4 = sb1.append("Hello").append("World!");  // 字符串连接

3.3 字符串的插入和删除

StringBuffer类提供了插入和删除字符串的方法。例如:

sb1.insert(0, "Hi ");  // 在指定位置插入字符串
sb2.delete(0, 6);  // 删除指定位置的字符串

3.4 字符串的反转

StringBuffer类提供了反转字符串的方法。例如:

sb2.reverse();  // 反转字符串

四、StringBuilder类的基本介绍

StringBuilder是可变的字符串类,它与StringBuffer类类似,但是它没有线程安全的问题,因此在性能要求较高的情况下,推荐使用StringBuilder类。下面是StringBuilder类的一些常用方法。

4.1 创建StringBuilder对象

我们可以使用StringBuilder的构造函数来创建StringBuilder对象。例如:

StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder("Hello World!");

4.2 字符串的拼接和连接

StringBuilder类提供了多个方法来进行字符串的拼接和连接。例如:

StringBuilder sb3 = sb1.append(sb2);  // 字符串拼接
StringBuilder sb4 = sb1.append("Hello").append("World!");  // 字符串连接

4.3 字符串的插入和删除

StringBuilder类提供了插入和删除字符串的方法。例如:


sb1.insert(0, "Hi ");  // 在指定位置插入字符串
sb2.delete(0, 6);  // 删除指定位置的字符串

4.4 字符串的反转

StringBuilder类提供了反转字符串的方法。例如:

sb2.reverse();  // 反转字符串

五、二维表对比三者区别

Java-String、StringBuffer、StringBuilder区别及相关面试题

类间关系

可以看出StringBuffer类和StringBuilder类都继承于AbstractStringBuilder类。
Java-String、StringBuffer、StringBuilder区别及相关面试题

六、相关面试题

6.1 如何比较两个字符串是否相等?

可以使用equals()方法或equalsIgnoreCase()方法来比较两个字符串是否相等。

例如:String str1 = “Hello”; String str2 = “World”; str1.equals(str2);

6.2 如何将字符串转换为大写或小写?

可以使用toUpperCase()方法将字符串转换为大写,使用toLowerCase()方法将字符串转换为小写。

例如:String str = “Hello”; str.toUpperCase();

6.3 String类的常用方法有哪些?

常用方法包括length()方法、charAt()方法、indexOf()方法、substring()方法、replace()方法等。

6.4 请说出StringBuffer和StringBuilder的适用场景

应当在多线程环境或需要频繁进行字符串修改操作时使用StringBuffer。

应当在单线程环境下,并且需要频繁进行字符串修改操作时使用StringBuilder。

6.5 为什么String对象是不可变的?

String对象的不可变性主要是为了保证字符串操作的安全性和效率。不可变的字符串可以被共享和复用,而不必担心被修改。

6.6 StringBuilder与StringBuffer的性能比较?

StringBuilder的性能稍优于StringBuffer,因为StringBuilder不需要进行同步操作,所以在单线程场景下性能更好一些。文章来源地址https://www.toymoban.com/news/detail-500628.html

到了这里,关于Java-String、StringBuffer、StringBuilder区别及相关面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • String、StringBuilder和StringBuffer之间的区别是什么?

    String 、 StringBuilder 和 StringBuffer 在Java中都用于处理文本数据,但它们之间存在一些关键区别,主要体现在可变性、线程安全性和性能上。 String 不可变性 : String 类的对象是不可变的。这意味着一旦 String 对象被创建,它所包含的字符序列就不能被改变。每次对字符串进行修

    2024年02月21日
    浏览(48)
  • 面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别

    面试官 :“小伙子,在日常的写代码过程中,使用过String,StringBuilder和StringBuffer没?” 我: “用过的呀!” 面试官: “那你就来聊一聊,他们之间有什么区别,不同场景下如何选择吧” 我: “好嘞!” 在Java的开发过程中,使用频率最高的就是String字符串,但由于在字符

    2024年01月18日
    浏览(44)
  • 7.1 String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

    可变性 简单的来说: String 类中使用 final 修饰字符数组来保存字符串, private final char value[] ,所以 String 对象是不可变的。 补充(来自issue 675):在 Java 9 之后,String 、 StringBuilder 与 StringBuffer 的实现改用 byte 数组存储字符串 private final byte[] value 而 StringBuilder 与 Str

    2024年02月15日
    浏览(35)
  • Java中的String、StringBuffer和StringBuilder

    在 Java 中,字符串是最常用的数据类型之一。 Java 中有三种处理字符串的方式:String、StringBuffer 和 StringBuilder。它们都被设计为处理字符串操作,但是它们之间有所不同。本篇博客将会介绍 String、StringBuffer 和 StringBuilder 的区别以及如何在 Java 中使用这些类型。 在 Java 中,

    2024年02月02日
    浏览(41)
  • Java字符串知多少:String、StringBuffer、StringBuilder

    String 是 Java 中使用得最频繁的一个类了,不管是作为开发者的业务使用,还是一些系统级别的字符使用, String 都发挥着重要的作用。 String 是 不可变 的、 final 的,不能被继承,且 Java 在运行时也保存了一个字符串池(String pool) ,就使得 String 变得很特殊。 实现三个接口:

    2024年02月06日
    浏览(50)
  • 【java】关于String、StringBuffer和StringBuilder的那些事

      目录 一、String 1、构造方法 2、字符串的不可变性 3、字符串的比较 4、 String的常用方法: 二、StringBuider和StringBuffer 1、字符串的拼接 2、StringBuider与StringBuffer 总结     String类提供的构造方式非常多,常用的就以下两种:   注意: 1、String 是引用类型,内部并不存储字符串

    2024年04月10日
    浏览(54)
  • 【JAVA】String ,StringBuffer 和 StringBuilder 三者有何联系?

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在之前的文章中我们介绍了JAVA中String的运用方法,事实上在JAVA字符串操作中仅仅只知道String方法是远远不够的,今天我们要介绍的 StringBuffer 和 StringBuilder 在字符串操作中同样占据总要地位。 和 String 类不同的是,S

    2024年02月14日
    浏览(52)
  • 【后端面经-Java】String与StringBuffer与StringBuilder的比较

    目录 1. String 2. StringBuffer 3. StringBuilder 4. 性能提升 5. 总结和比较 面试模拟 参考资料 不可变 查看 String 源码如下:由源码可知,String中存储数据的数组被 final 修饰,因此是不可变的 运算和操作 创建对象 创建对象有两种方式:两种方式都会在栈中创建一个字符串变量

    2024年02月16日
    浏览(43)
  • java中的String使用注意事项、StringBuilder、StringBuffer、StringJoiner

    String使用注意事项 这里第二次创造了0个对象是因为字符串常量池中已经有\\\"abc\\\" StringBuilder 注意StringBuilder支持链式编程 StringBuilder 线程安全与不安全的区别在于,当系统里存在很多人同时操作同一个StringBuilder就可能出bug,而StringBuilder不会。 StringJoiner

    2024年02月12日
    浏览(33)
  • 36、Java 中的 String、StringBuilder、StringBuffer、字符串常量池和 intern 方法

    ✏️ Java 中用 java.lang.String 类代表字符串 ✏️ 底层用 char[] 存储字符数据。从 Java9 开始,底层使用 byte[] 存储字符数据 🌿 字符串的底层是 char[] ,但是 char 数组和字符串不能等价。 char 数组是 char 数组,字符串是字符串。 🌿 C 语言中是可以把 char 数组 和字符串等价的 ✏️

    2023年04月08日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包