当前位置:首页 » 《随便一记》 » 正文

String Class

18 人参与  2022年04月11日 12:00  分类 : 《随便一记》  评论

点击全文阅读


文章目录

  • 前言
  • StringBuilder
    • 我们先直接new 个 StringBuilder,看个效果
    • 既然发现直接使用,没有现象,那么我们就来传参。
      • 第一种 直接传参
      • 第二种,通过append方法去添加
        • 附图
        • 这是我们再 append 一个字符串时,会发生怎么的效果
        • append 可以连用。
    • 拓展
      • 回顾前面在讲 字符串常量池的时候,有两个字符串拼接,拼接好的字符串引用类型就是StringBuilder类型。不入池。
        • 代码示例(模仿当时情景):
          • 效果图
          • 附图
    • 虽然我们前面说: StringBuilder 和 StringBuffer 几乎一样,但 是 几乎,而不是完全,所以还是会存在着些许不同的地方,接下来,我们就来讲一下 StringBuilder 和 StringBuffer的区别。
    • 小知识点:
      • 把字符串转变成StringBuilder类型/StringBuffer类型,必须调用对应的构造方法
      • StringBuilder类型/StringBuffer类型 转变成 String类型,调用 toString 方法
  • 文章的最后,以面试的问题结束
    • 面试题:请解释String、StringBuffer、StringBuilder的区别

前言

StringBuffer 、 StringBuilder、 String 是三种数据类型
首先来回顾下String类的特点:
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指
向而已。
通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和
StringBuilder类。

再来说 StringBuffer 和 StringBuilder ,从内部的方法上来说:大同小异,基本一致。


StringBuilder

我们先直接new 个 StringBuilder,看个效果

在这里插入图片描述


既然发现直接使用,没有现象,那么我们就来传参。

第一种 直接传参

在这里插入图片描述


疑问由此而生,sb 是一个引用,存储的地址,那么它怎么 就可以打印"abcdef"呢?
这是因为 sout(System.out,println) 调用的是 sb 引用类型的 toString。
那么我们 Ctrl+左键,进入 StringBuilder 类型中
在这里插入图片描述
那么我们就可以这么去写,因为它的返回值本身就是 String
在这里插入图片描述


第二种,通过append方法去添加

在这里插入图片描述

附图

在这里插入图片描述


#ensp;

这是我们再 append 一个字符串时,会发生怎么的效果

在这里插入图片描述


append 可以连用。

语法: append().append();在这里插入图片描述


拓展

回顾前面在讲 字符串常量池的时候,有两个字符串拼接,拼接好的字符串引用类型就是StringBuilder类型。不入池。

代码示例(模仿当时情景):

public class Test {
    public static void main(String[] args) {
        String str = "abcdef";
        str+="123";
        System.out.println(str);
    }
}
效果图

在这里插入图片描述

附图

在这里插入图片描述
由此得出局部结论:在循环拼接字符串的时候,使用 StringBuilder / StringBuffer ,效率要比String更高。(最后我们在对其优化一波)
在这里插入图片描述


虽然我们前面说: StringBuilder 和 StringBuffer 几乎一样,但 是 几乎,而不是完全,所以还是会存在着些许不同的地方,接下来,我们就来讲一下 StringBuilder 和 StringBuffer的区别。

在这里插入图片描述
由此得知,StringBuilder 和 StringBuffer 的功能都差不多,大部分功能都相同,
但是 有些功能,虽然名称是一样的,但是功能上的实现,却存在着细微的区别。
比如:append
在这里插入图片描述


小知识点:

把字符串转变成StringBuilder类型/StringBuffer类型,必须调用对应的构造方法

在这里插入图片描述


StringBuilder类型/StringBuffer类型 转变成 String类型,调用 toString 方法

在这里插入图片描述


文章的最后,以面试的问题结束

面试题:请解释String、StringBuffer、StringBuilder的区别

String 的内容不可修改,StringBuffer 与 StringBuilder的内容可以修改
StringBuffer 与 StringBuilder 大部分功能是相似的
StringBuffer 采用同步处理(synchronized),属于线程安全操作;而 StringBuilder 未采用同步处理(synchronized),属于线程不安全操作


点击全文阅读


本文链接:http://zhangshiyu.com/post/37779.html

字符串  类型  拼接  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1