Java基础之String,StringBuilder,StringBuffer

在创建字符串的时候总是习惯性的使用String str = "...";,str = str+"abcd";也有听说过StringBuffer,StringBuilder,但是压根就没想过要去了解过。

String乍一看创建的很方便,其实在字符串比较多的时候或者说创建了多个字符串的时候就会出现很大的问题,因为String在新创建字符串的时候是在内存里面新开辟了一块内存去存储这个字符串,因为String是静态的,之所以我们看起来是动态的,那是因为JVM把我们欺骗了,在内存里面其实是存在了新的对象,所以其运行的速度可想而知了。但是StringBuffer和StringBuilder就不一样了。

StringBuffer和StringBuilder是动态的,StringBuffer buffer= new StringBuffer("StringBuffer"); buffer.append("abcd"); 在这个过程中并没有去新建新的StringBuffer对象。所以他们的读写速度基本上是String的十倍或数十倍。

StringBuffer和StringBuild的差异在于一个是线程安全的一个是不安全的,StringBuffer是线程安全的,StringBuilder是线程不安全的。就像HashTable和HashMap一样,他们分别使用在不同的场合。StringBuffered使用在多线程里面保证同步数据的安全性,StringBuilder使用在单线程里面保证读写的迅速。

时间: 2024-08-05 14:56:37

Java基础之String,StringBuilder,StringBuffer的相关文章

黑马程序员-Java基础之String与StringBuffer

String与StringBuffer < java.lang >-- String字符串 java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象. 特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中. ----------------------------------

黑马程序员----java基础:String与StringBuffer及基本数据类型包装类

java中一些基础类比如String.StringBuffer和基本数据类型包装类都是非常常见且使用非常频繁的类.这些类虽然简单,但是想要熟练使用也必须要学习,虽然API文档对这些类的用法都讲的比较详细,但是我觉得还是有必要再整理一下. 一.String类 1.概述 String就是字符串的意思,首先要明确一点的是String并不属于基本数据类型. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 注意new String()

java面试题String,StringBuilder,StringBuffer

面试的经历中,相信大家都经常被问到这三者的区别,说到String我相信绝大多数的人都会说:"String是不可变的,final修饰的",你会看到面试官微微猥琐一笑,接着问到:"final修饰的类就是不可变的吗,那StringBuilder和StringBuffer不是final修饰的?" 1. 先来说说String 看下JDK1.7 String成员变量的源码 /** * @author Lee Boynton * @author Arthur van Hoff *

java基础之string,stringbuffer,stringbuilder

一 string public final class String 继承自java.lang.Object类. 实现了接口: java.io.Serializable, Comparable<String>, CharSequence String类是不能被修改的字符串.因为String类里面的数据是final类型的. 区别两种方式: ① String s = "aaaa": ② String s1 = new String("aaaa"); 对于第一

Java基础 (3) - String/StringBuilder/Buffer StringFor

区别1.可变与不可变String -> private final char value[]; final 不可变的StringBuilder/Buffer -> char value[] 可变的String设计成不可变原因 -> 多个指引指向同一个内存空间,如任意指引修改,值将改变,其它引用也将改变. 2.是否多线程安全String -> 安全 (不可变对象)StringBuilder -> 不安全StringBuffer -> 安全 3.性能1.StringBuil

JAVA基础篇—String和StringBuffer

区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值 (2)String类对象的性能远不如StringBuffer类. String s=new "hallo";创建了两个对象,字符串在常量池中,s指向String字符串对象,String字符串对象指向 常量池中字符串 小例: String str=" zxcvbnm

关于Java基础知识 String StringBuffer StringBuilder三者的区别

Java基础中String StringBuffer StringBuilder 以下介绍 相同点:String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组,StringBuffer和StringBuilder都继承了AbstractStringBuilder 不同点:String:char数组是final的,不可变,修改String时实际上是new一个新String对象返回,线程安全,频繁的增删操作时不建议使用 StringBuffer:线程安全(

深刻理解Java中的String、StringBuffer和StringBuilder的区别

首先简单地来梳理一下Java中String.StringBuffer和StringBuilder各自的含义. 1.String类 首先,它是线程安全的,即可以用于多线程编程中: 其次,String类的对象是不可变的,即在定义时就确定了,类似String str="Hello";str+="Java";的语句其实是生成了新的对象,只是我们未察觉到而已.但是注意在大量的字符串新建对象时消耗就很可观,这时必须考虑采用StringBuffer或StringBuilder,否

Java之字符串String,StringBuffer,StringBuilder

总结的很全面,关于这三个类的操作. Java之字符串String,StringBuffer,StringBuilder