顾乔芝士网

持续更新的前后端开发技术栈

JAVA大厂面试题——String、StringBuffer 和 StringBuilder

一、类型

String是只读字符串,它不是基本数据类型,是一个对象,是一个final类型的字符数组,所引用的字符串不能被改变,定义后,无法在增删改,而StringBuffffer和 StringBuilder底层都是一个可变是的字符数组,所以在进行频繁的字符串操作时,建议使用StringBuffffer和 StringBuilder来进行操作。

String、StringBuilder、StringBuffer源码分析

String 源码

  private final char value[];

    public String() {
        this.value = "".value;
    }

    public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }

    public String(char value[]) {
        this.value = Arrays.copyOf(value, value.length);
    }
复制代码

String、StringBuffer和StringBuilder

String、StringBuffer和StringBuilder都是java中的类,它们都可以用来存储和操作字符串,即包含多个字符的字符数据。

String类表示内容不可改变的字符串,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

一文教你Java字符串处理(String,StringBuffer,StringBuild)

前言

本文篇幅较长,但都是满满的干货,请大家耐心观看,相信会有不小的收获。本人在总结的过程中也收获了很多的知识,也希望大家可以一起借鉴学习下,希望大家最后都能有所收获!

再言

字符串的分类在java.lang包中,定义了两个大类来表示字符串: String和 String Buffer(StringBuild)类,它封装了字符串的数据结构,并定义了许多方法来处理字符串。Java将字符串分为两类的目的是为了提高系统对字符串的处理效率:

聊聊Java中String,StringBuilder,StringBuffer那些事

对于这三个,我们首先能知道的就是String是不可变的,StringBuilder和StringBuffer是可变的,那么我们就先说说String,它为什么设计成不可变的以及怎么实现不可变的。

String为什么设计成不可变的?

我们其实能感觉到,字符串其实是我们开发过程中最常用的一种数据结构了,如果依赖于常规的对象创建方式,那么就会出现大量重复字符串值的对象,这会消耗大量空间,从而影响GC效率。

StringBuffer 和 StringBulider区别

StringBuffer和StringBuilder都是Java中用于处理字符串的类,它们的主要区别在于线程安全性和性能方面。

1. 线程安全性:

- StringBuffer是线程安全的,它的方法都被synchronized修饰,可以在多线程环境下使用,但因为需要处理同步,所以性能较差。

- StringBuilder是非线程安全的,它的方法没有被synchronized修饰,适用于单线程环境下的字符串操作,因此性能较好。

Java中字符串StringBuffer和StringBuilder的使用

Java中表示字符串的有三个类:String、StringBuffer和StringBuilder。其中,String的长度是不可变的,而StringBuffer和StringBuilder是长度可变的。对于StringBuffer和StringBuilder来说,两者的API几乎一模一样,因为两者有共同的父类:AbstractStringBuilder。区别在于StringBuffer的大部分方法都是被synchronized关键字修饰,是线程安全的,而StringBuilder则与其相反。

String、StringBuffer、StringBuilder的区别

#头条创作挑战赛#


探秘Java面试中问的最多的String、StringBuffer、StringBuilder



String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方。今天我们就来讲解一下。

本文测试中JDK版本是:1.7

1、先看下String类

String源码如下:

Java 从底层与接口实现了解String、StringBuffer、StringBuilder

String、StringBuffer 和 StringBuilder的接口实现关系:

String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。

StringBuffer:宣称线程安全的字符串变量(Synchronized,即线程安全,multiple threads cannot access it simultaneously,可将字符串缓冲区安全地用于多个线程)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。

<< 1 2 > >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言