`

String,StringBuffer区别和原理

 
阅读更多

String和StringBuffer总的来说有四个不同点:

1. String是不可变类,String对象创建之后,它的内容是无法改变的,因为它的内容属性定义为final char value[],因此对于一些看似可以改变String对象本身的方法,实际上是返回一个包含新内容的新创建的String对象,因为除了在定义属性,或者构造函数中初始化final属性之外,不能在其他地方初始化final属性。

 

StringBuffer是可变类,它的内容属性定义为char value[],因此对于一些可以改变StringBuffer对象本身的方法,可以通过改变value属性本身来达到改变StringBuffer对象的目的。

 

不过值得注意的一点是:对于String和StringBuffer来说,都是通过创建新的char value[]数组来达到字符串改变的操作的,只不过String是通过新创建String对象来达到目的,而StringBuffer是通过改变自身的内容属性来达到目的,因为Java无法动态来改变数组的长度。

 

2. String类覆盖了Object类得equals方法,而StringBuffer类没有覆盖,因此有下面的结果:

new String("ABC").equals(new String("ABC")) => true;

new StringBuffer("ABC").equals(new StringBuffer("ABC")) => false

 

3. String类和StringBuffer类都覆盖了Object的toString方法,但是实现不一样,String类的toString方法直接返回对象本身引用,而StringBuffer类的toString方法返回一个包含StringBuffer值的新的String对象,因此有下面的结果:

String s = "abc";

s.toString() == "abc"  => true;

new StringBuffer().toString() == "abc"  => false

 

4. String类对象可以使用“+”来进行字符串的连接,而StringBuffer对象不能使用"+"来进行字符串的连接。

分享到:
评论

相关推荐

    JavaString、StringBuffer、StringBuildermd,学习代码

    总之,掌握`String`、`StringBuffer`和`StringBuilder`的用法,理解`Tomcat`的工作原理,以及清楚`Cookie`、`Session`和`localStorage`、`sessionStorage`的区别,对于Java后端开发和Java Web应用的构建是基础且关键...

    5讲String、StringBuffer、Stri...1

    Java中的字符串处理是编程中常见的任务,涉及到三个主要的类:String、StringBuffer和StringBuilder。它们之间的主要区别在于线程安全、性能和可变性。 首先,`String`类是不可变的,这意味着一旦创建了一个`String...

    纯面向对象的思想jdbc编程,StringBuffer线程,线程习题

    在Java中,String类是不可变的,这意味着它的内容一旦创建就不能改变,而StringBuilder和StringBuffer则提供了可变的字符串操作。其中,StringBuffer线程安全是因为它的方法加了同步锁,可以保证在多线程环境下,对...

    深入解析StringBuffer和StringBuilder的区别

    Java中的`StringBuffer`和`StringBuilder`类是用于构建和拼接字符串的高效工具,尤其在处理大量字符串连接时,它们的表现优于简单的使用`+`运算符或创建新的`String`对象。这两个类的主要区别在于线程安全性和性能。...

    Java string不可变原理实例解析

    5. **效率**:由于String对象是不可变的,编译器和JVM可以对它们进行优化,比如字符串连接操作(`+`运算符)在某些情况下会被优化为StringBuilder或StringBuffer的append操作,这在处理大量字符串连接时能显著提升...

    java String 数据结构

    这是因为`String`在Java中被实现为一个特殊的类,存储在一个连续的字符数组中,这个特性对于理解它的内部工作原理以及如何有效地使用它至关重要。下面将详细探讨`String`类的数据结构、常用方法以及适用于初学者的...

    java String类的实现

    - `StringBuilder`和`StringBuffer`类提供了更高效的字符串连接,特别是处理大量字符串拼接时,它们可以在内部进行修改,而无需每次都创建新对象。 ### 6. 字符串常量池 Java虚拟机(JVM)维护了一个字符串常量池,...

    day13_StringBuffer_java_

    在Java编程语言中,"StringBuffer" 是一个非常重要的类,尤其在处理字符串操作时,尤其是在多线程环境中。在本教程"day13_...通过掌握`StringBuffer`的工作原理和常用方法,你可以编写出更高效、更安全的代码。

    String作为形式参数传递给方法的情况

    下面将从实现原理的角度上阐述和剖析 String 作为方法参数的传递机制。 一、 String 作为方法参数的传递机制 当我们将 String 型参数传递给方法时,实际上传递的是 String 对象的引用,而不是 String 对象本身。这...

    StringTable.pdf

    本文将详细探讨StringTable的原理、特点以及相关优化策略。 **StringTable的特性与作用** 1. **字符串唯一性**:根据Java语言规范,相同的字符串字面量应共享同一实例,以节省内存。StringTable确保了这一点,它是...

    java StringBuffer详解

    本篇文章将深入探讨`StringBuffer`的原理、用法及其与`StringBuilder`的区别。 1. **基本概念** `StringBuffer`是Java中处理字符串的类,它继承自`AbstractStringBuilder`并实现了`Serializable`和`CharSequence`...

    java String Vector简单初学者代码

    Java中的String、Vector和Scanner是三个非常基础且重要的概念,对于初学者来说,理解它们的用法和原理是学习Java编程的关键步骤。 首先,我们来深入理解`String`类。在Java中,`String`是一个不可变的字符序列,这...

    详解Java中字符串缓冲区StringBuffer类的使用

    在Java编程中,`StringBuffer`类是一个非常重要的...了解其工作原理和用法对于编写高效的多线程代码至关重要。在处理字符串时,根据具体需求选择`String`、`StringBuilder`或`StringBuffer`,能够有效地优化程序性能。

    StringBuffer 拼接查询条件

    ### StringBuffer 拼接查询条件 #### 背景介绍 在软件开发中,特别是Web应用开发领域,根据用户输入的动态查询条件构建SQL语句是一项...然而,在实际应用中还需要注意安全性和性能优化等问题,以确保系统的稳定运行。

    Java String 拼接字符串原理详解

    Java String 拼接字符串原理详解 Java 中的字符串拼接是一个非常基础的操作,但是其背后却隐藏着许多复杂的机理。在本文中,我们将深入探讨 Java 中字符串拼接的原理,并揭开其幕后的秘密。 首先,让我们来看一道...

    十大常见Java String问题_动力节点Java学院整理

    7. **String、StringBuilder与StringBuffer的区别** String是不可变的,而StringBuilder是可变的,这意味着在创建后可以修改其内容。StringBuffer是线程安全的StringBuilder版本,但在多线程操作中效率较低。如果在...

    String_raw-源码.rar

    这个“String_raw-源码.rar”文件很可能包含了Java标准库中`String`类的原始源代码,这对于深入理解`String`类的工作原理非常有帮助。在这里,我们将深入探讨`String`类的一些关键知识点。 1. **字符串常量池**:在...

    java中String与StringBuilder的区别

    Java中的String和StringBuilder都是用来处理字符串的类,但它们在使用和性能上有显著区别。String是不可变的对象,这意味着一旦创建了String对象,就不能更改它的值。每次对String进行修改,实际上是创建了一个新的...

    程序员美团篇.pdf

    * String、StringBuffer、StringBuilder的区别:程序员需要了解String、StringBuffer和StringBuilder的区别和应用场景。 Java反射机制 * Java反射机制:程序员需要了解Java反射机制,包括反射的原理和应用场景。 ...

    有关Java String常用方法的总结.docx

    总的来说,理解和掌握Java String类的方法以及常量池的工作原理对于编写高效的Java代码至关重要。这包括字符串的连接、比较、复制以及如何利用常量池来优化性能。同时,了解final关键字在字符串引用中的应用,有助于...

Global site tag (gtag.js) - Google Analytics