String StringBuffer StringBuilder之间的区别

String:字符串常量

StringBuffer:字符串变量

StringBuilder:字符串变量

对于这句话的理解你可能会产生这样一个疑问  ,比如这段代码:

1 String s = "abcd";
2 s = s + 1;
3 System.out.print(s);  //abcd1

我们明明就是改变了String型的变量s的,为什么说是没有改变呢? 其实这是一种欺骗,JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

StringBuilder:线程非安全的

StringBuffer:线程安全的

时间: 2024-10-25 22:39:35

String StringBuffer StringBuilder之间的区别的相关文章

String StringBuffer StringBuilder 之间的区别

StringBuffer与StringBuilder的区别: StringBuffer是jdk1.0版本出来的,线程安全,效率低 StringBuilder是jdk1.5版本出来的,线程不安全,效率高 String 与StringBuffer,StringBuilder 啷两个之间的区别: String是一个不可变的字符序列 StringBuffer,StringBuilder 是可变的字符序列

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

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

String ,Stringbuffer,Stringbuilder有什么区别

一:string是不可变的.stringbuffer是拼接字符串线程安全的.stringbuilder线程不安全 二:stringbuffer和stringbuilder底层是char或byte(jdk9)数组,构建初始长度是16. 三:jvm会将所有的字符串缓存起来.当调用"".intern()方法就会从缓存中查,有就返回实例,没有就建缓存.jdk6是这样的.但是不推荐使用,因为他存在perngon,永久代,fullGc才可以清理.后续的版本放在了堆中,jdk8放在了元数据区. 四:

String/StringBuffer/StringBuilder基础

String类:特点: 1)字符串字面值"hello"可以看做一个字符串对象 2)字符串是常量,一旦被赋值,就不能被改变. 构造: public String() public String(byte[] bytes) public String(byte[] bytes,int index,int length):表示从该字节数组的offset索引处开始获取length个字节数结合成字符串 public String(char[] value) public String(char[

转:String StringBuffer StringBuilder区别

转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸裸的站在我们这些Java色狼面前了.嘿嘿.... 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却不是普通的类哦!!! [镜头1] String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,

Java杂谈之StringBuffer----兼带String,StringBuffer,StringBuilder的区别

在Java中,用到最多的当属String类型的数据了 而这一点就要涉及String , StringBuffer , StringBuilder这三大类 下面主要来比较一下String和StringBuffer的区别,因为StringBuffer和StringBuilder 太相似,所以就不拿来比较了. 提及一下,StringBuffer和StringBuilder的区别 从安全性来说,StringBuffer更安全,StringBuffer主打线程安全 从执行效率来说,StringBuilde

字符串的使用(string,StringBuffer,StringBuilder)

String中==与equals的区别:==比较字符串中的引用相等equals比较字符串中的内容相等(因为字符串有重写equals方法) 例子: /************ String中的equals与== *****************/ /*  * ==比较字符串中的引用相等  * equals比较字符串中的内容相等(因为字符串有重写equals方法)  */// public static void main(String[] args) {//  String s1 = new S

String, StringBuffer, StringBuilder比较

1.见API: String是不可变的字符序列: StringBuffer是线程安全的,可变的字符序列: StringBuilder是可变的字符序列: StringBuffer与String的区别是StringBuffer是可变的(StringBuffer看做可变的String),StringBuffer中含有的字符序列和自身长度可随着方法调用而改变:StringBuffer在多线程环境中是安全的,必要的方法都是同步的,因而在某一特定实例上的所有方法就像被依次执行一样,与所有方法依次执行的结果一

Java学习笔记--String StringBuffer StringBuilder

String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String str0 = "最正常的创建方法"; System.out.println(str0); char[] c1 = new char[3]; c1[0] = 'c'; c1[1]