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

JAVA字符串

时间:2015-08-30 17:11:07      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

Stirng、StringBuffer和StringBuilder都实现了字符序列接口CharSequence,都是final类。

一、Stirng、StringBuffer和StringBuilder

    (1) 三者都可以存储和操作字符串。

   (2)String提供了数值不可改变的字符串,而StringBuffer和StringBuilder是可改变的。

   (3)操作String对象是,可能会额外产生许多临时变量,而StringBuffer和StringBuilder不会。

   (4)String实现了equals()方法,而StringBuffer和StringBuilder没有。即new String(“abc”).equals(new String(“abc”))的结果为ture;而new StringBuffer(“abc”).equals(new StringBuffer(“abc”))的结果为false.。

   (5)StringBuffer实现了线程安全,而StringBuilder没有。但,在单线程下,StringBuilder的性能比StringBuffer好。所以,……..

 

二、String的变与不变

    1、String不变:是指String对象的内容是不可变的,一旦试图去修改String对象的内容,计算机就会创建新的String对象(开辟新的内存空间)存放新的结果,同时指向原先String对象的String变量会指向新的String对象。即String对象是不可变的,但String变量可改变其所指向。

    2、String的特别案例

      (1)有如下代码:

                 String a = new String(“123”);

                 String b = new String(“123”);

          请问:a与b指向的是同一个对象吗………

          答案:a与b指向的是不同的对象,计算机为相同的字符串常量开辟不同的空间。

      (2)有如下代码:

                 String a = “123”;

                 String b = “123”;

          请问:a与b指向的是同一个对象吗………

          答案:a与b指向的是同一个对象,计算机只为相同的字符串常量开辟一份空间

      (3)有如下代码:

                 String a = “123” + “”;

                 String b = “123” + “”;

          请问:a与b指向的是同一个对象吗………

          答案:a与b指向的是同一个对象,编译器对上述代码进行优化(“123” + “”与“123”等价)

三、正确使用Stirng、StringBuffer和StringBuilder

    1、字符串连接,不应该使用String,而应首选使用StringBuilder,如果要求线程安全,则选用StringBuffer。

    2、使用StringBuilder和StringBuffer时,要为它们配置初始容量(尽管需要计算)。

3、通过StringBuilder和StringBuffer的toString()方法,返回一个String对象。

4、数字转换为字符串时,不是使用包装器的toString(),而应当使用String.valueOf(…)

JAVA字符串

标签:

原文地址:http://www.cnblogs.com/oo-lab/p/4770982.html

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