`

StringBuffer和String的优缺点比较

    博客分类:
  • Java
 
阅读更多

1. String 类
     String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
   String a = "a"; //假设a指向地址0x0001
   a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。
   因此String的操作都是改变赋值地址而不是改变值操作。

2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

   StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
   StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
   StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

3.StringBuffer
  StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。

4.线程安全
StringBuffer 线程安全
StringBuilder 线程不安全

5.速度
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

6.总结
(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

分享到:
评论

相关推荐

    String、StringBuffer、StringBuilder的使用方法

    在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`是处理字符串的三个重要类,它们各自有特定的使用场景和优缺点。理解它们的差异对于编写高效的代码至关重要。 **String类** `String`是不可变的类,...

    Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    "Java 中 String、StringBuffer 和 StringBuilder 的区别及用法" Java 中 String、StringBuffer 和 StringBuilder 是三个常用的字符串操作类,了解它们之间的区别对 Java 开发者来说非常重要。本文将详细介绍这三者...

    Java-String&StringBuilder&StringBuffer的区别与分析

    Java中的String、StringBuilder和StringBuffer类都是用于处理字符串的,但在不同的场景下,它们各有优缺点。本篇文章将深入分析这三个类的区别。 首先,我们来看它们的值可变性。String类是不可变的,这意味着一旦...

    java对象转换String类型的三种方法共1页.pdf

    注意,标签中的“java对象转换String类型”可能意味着文件讨论了这些方法的适用场景、优缺点以及如何根据实际需求选择合适的方法。压缩包中的“赚钱项目”文件名似乎与主题无关,可能是误放或者代表其他内容。在实际...

    2023版Java面试题.pdf

    4. String、StringBuilder 和 StringBuffer 的区别:String 是不可变的,StringBuilder 和 StringBuffer 是可变的,StringBuilder 是线程不安全的,而 StringBuffer 是线程安全的。 5. 为什么重写 equals 时,必须...

    Java 22道基础面试题.docx

    Java 基础面试题知识点总结 Java 是一种广泛应用的编程语言,本文总结了 Java 基础面试题中的 16 个知识...16. 反射优缺点:反射的优点是可以动态获取信息和动态调用对象的机制,缺点是可能会降低程序的性能和安全性。

    java 倒置字符串

    每种方法都有其优缺点,应根据具体需求和性能要求选择合适的方法。在实际编程中,`StringBuilder`通常是首选,因为它既简单又高效。同时,了解这些不同的实现方式有助于加深对Java字符串操作的理解。

    java面试题技术类和人事面试问比较难回答的问题

    5. **个人优缺点**:优点要与应聘职位相关,缺点可提及并展示改进的意愿。 6. **压力承受能力**:举例说明在高压力环境下如何保持冷静和解决问题。 7. **其他福利**:除薪资外,还可以关注培训机会、工作生活平衡...

    Java语法基础-面试专题及答案

    12.String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 可变性、线程安全性的研究 13.自动装箱与拆箱 14.在一个静态方法内调用一个非静态成员为什么是非法的 15.在 Java 中定义一个不做事...

    Java语言中字符串常量和变量的分析与比较.pdf

    - 常用方法:包括`equals()`用于比较内容是否相等,`equalsIgnoreCase()`忽略大小写比较,`compareTo()`进行字典顺序比较,`indexOf()`和`lastIndexOf()`查找子字符串的位置,以及`concat()`连接字符串等。...

    Java中5种方式实现String反转

    每种方法都有其优缺点:数组实现简单易懂,但涉及数组拷贝;栈实现利用数据结构特性,但额外创建了栈对象;逆序遍历利用`StringBuffer`避免了拷贝,效率较高;位运算巧妙但可能受数据范围限制;递归实现思路独特,但...

    java实现字符串逆序输出

    两种方法各有优缺点。`StringBuilder`和`StringBuffer`方法更简洁,且在多线程环境下更安全,因为它们是线程安全的。而数组方法则更直观,但可能需要更多的代码来完成相同的功能。 在实际编程中,理解这些基本的...

    java offer收割指南

    String 是不可变的,Stringbuffer 和 StringBuilder 是可变的。Stringbuffer 是线程安全的,而 StringBuilder 不是。 4. ArrayList 和 LinkedList 有什么区别。 ArrayList 是基于数组实现的,LinkedList 是基于...

    Java占位符三种方案一起时间性能对比

    在Java编程语言中,占位符是一个非常常见的概念,它用于在字符串模板中预留位置,以便在运行时插入动态内容。通常,我们有多种方法来实现这个...因此,理解这些方法的优缺点并根据项目需求做出明智的选择是至关重要的。

    关于字符串相等的比较

    ### 关于字符串相等的比较 #### 概述 在计算机编程中,字符串是比较常见的...选择合适的比较方法可以提高代码的效率和可读性。除了上述介绍的方法外,还可以根据具体需求使用其他高级技巧和技术来实现更复杂的功能。

    葵花宝典和九阴真经.面试题

    * String 和 StringBuffer 的区别:String 类提供了数值不可改变的字符串,而 StringBuffer 类提供的字符串可以进行修改。 异常处理 * 运行时异常:表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。...

    Java堆和栈的区别

    "Java 堆和栈的区别" Java 堆和栈是 Java 中的两种内存管理机制,它们都是 Java 用来在 RAM ...由于 String 类的 immutable 性质,当 String 变量需要经常变换其值时,应该考虑使用 StringBuffer 类,以提高程序效率。

    Java面试125面试题和答案

    比较String与StringBuffer的差异: ```java String s1 = "Hello"; s1.concat("World"); // 不改变s1的值 System.out.println(s1); // 输出 "Hello" StringBuffer sb = new StringBuffer("Hello"); sb.append(...

    三大框架面试资料

    对于三大框架,面试官可能会深入询问它们的具体使用场景、配置、优缺点以及如何解决实际开发中的问题。例如,Spring的依赖注入、AOP特性,Struts的MVC模式,以及Hibernate的对象关系映射机制等。因此,掌握这些基础...

    java复习题总结.docx

    7、Lambda表达式的优缺点 优点:代码简洁,提高可读性,便于实现函数式编程。缺点:可能降低代码的可调试性,过于简洁可能导致理解困难。 8、内存中的十进制数 十进制数在内存中以二进制形式存储,整数部分转换为二...

Global site tag (gtag.js) - Google Analytics