Java--String 和StringBuilder、StringBuffer 的区别?

1.String是只读字符串,引用的字符串内容是无法改变的。

2.StringBuffer和StringBuilder的字符串对象可以直接进行修改。

3.StringBuilder没有被synchronized关键字修饰,线程不安全,效率高于StringBuffer,StringBuffer线程安全。

4.如果连接后得到的字符串在静态存储区中是早已存在的,那么“+”性能优于StringBuffer/StringBuilder的append方法。

时间: 2024-11-23 04:30:00

Java--String 和StringBuilder、StringBuffer 的区别?的相关文章

Java String,StringBuilder和StringBuffer的区别 StringBuilder > StringBuffer> String

可以证明,字符串操作是计算机程序设计中最常见的行为. String:不可变的对象,对String对象进行改变的时候其实都等同于生成了一个新的String对象,然后将引用指向新的String对象,原String对象GC回收.StringBuffer 字符串变量(线程安全),适用于多线程程序中,保证同步性.StringBuilder 字符串变量(非线程安全),适用于单线程程序中,不保证同步性.简要的说, String 类和 StringBuffer/StringBuilder 类的主要性能区别其实在

String Stringbuilder Stringbuffer的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

Java String、StringBuilder、StringBuffer[笔记]

String对象是字符串常量(创建之后不可更改),StringBuilder和StringBuffer对象是字符串变量(可更改),三者主要区别在于执行速度和线程安全. 执行速度 执行速度:StringBuilder > StringBuffer > String 原因: String对象的更改会不断创建和回收String对象,而StringBuilder.StringBuffer不会. 例如: String str = "123"; System.out.println(s

java String、StringBuilder 、正则表达式

String类 字符串(引用类型) 修改字符串 是重新创建 赋值地址 构造方法 public class StringDemo2 { public static void main(String[] args) { String s1 = "hello"; String s2 = "hello";   与s2指向同一地址  存储在堆的常量池中 String s3 = new String("hello"); 创建对象 存储了s1地址 System

String 与StringBuilder有什么区别

String可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了存储数值不可改变的字符串. StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder.如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用或者变量的内容不断变化,那么最好用StringBuffer.

java String的“==”和equals的区别 (第一篇博客)

==和equals都是有比较是否相等的作用,但是它们二者有什么区别呢? 废话不多说,直接戳重点 ==比较的是地址,equals比较的是内容 但是要注意的是,在java虚拟机中含有字符串池(直接量在此池内),相同内容的字符串直接量对应为相同的对象...说得是不是有点抽象,举例来说明一下吧 String s1="hello"; String s2=new String ("hello"); s1=="hello";//true ,因为都指向直接量&q

[Java] String类, StringBuffer类

1. String 类 1. 创建: String s1 = new String; s1 = "abc"; String s2 = new String("abc"); char c[] = {'a', 'b', 'c'}; String s3 = new String(c); String s4 = "abc"; 1. 常用方法 2.1 int length() 返回字符串的长度 2.2 char charAt(int index) 返回字符

java String,StringBuffer,StringBuilder的区别

StringBuilder.StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...).只是StringBuffer会在方法上加synchronized关键字,进行同步. 最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer ? 这句话并不理解. 1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包

Java中的String,StringBuilder,StringBuffer三者的区别

最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正. 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String

JAVA String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以