码迷,mamicode.com
首页 > 编程语言 > 详细

java中String、StringBuffer、StringBuilder

时间:2018-10-23 23:06:08      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:直接   final   保护   方法   基本   类的成员   创建对象   相同   new   

1、String类是final类,即String类不能被继承,并且它的成员方法都默认为final方法。

2、对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

3、String str="hello world" 和 String str=new String("hello world")

  在JVM内存机制中,class文件中有一部分,来存储编译期间生成的字面常量以及符号引用,这部分叫做class文件常量池,在运行期间对应着方法区的运行时常量池。所以在上述代码中,都在编译期间生成了字面常量和符号引用,运行期间字面常量“hello world”被存储在运行时常量池。通过这种方式来将String对象跟引用绑定的话,JVM执行引擎会现在运行时常量池查找是否存在相同的字面常量,若存在,则直接将引用指向已经存在的字面常量,否则在运行时常量池开辟一个空间来存储该字面常量,并将引用指向该字面常量。而通过new关键字来生成对象是在堆区进行的,而在堆区进行对象生成的过程是不会去检测该对象是否已经存在的。因此通过new来创建对象,创建出的一定是不同的对象,即使字符串的内容是相同的。

4、String Builder和String Buffer类拥有的成员属性以及成员方法基本相同,区别就是String Buffer类的成员发放前面多了一个关键字:synchronized,即在多线程访问时起到安全保护作用,String Buffer是线程安全的。

5、String、String Buffer、String Builder三者的执行效率:String Builder  >  String Buffer  >  String(相对而言)

  三个类各有利弊,根据具体情况选择使用。当字符串相加操作或者改动较少的情况下,建议使用String str =“hello”这种;当字符串操作较多的情况下,建议使用String Builder;若采用了多线程,则使用String Buffer。

 

java中String、StringBuffer、StringBuilder

标签:直接   final   保护   方法   基本   类的成员   创建对象   相同   new   

原文地址:https://www.cnblogs.com/zeping8/p/9839378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!