黑马程序员:Java培训、Android培训、iOS培训、.Net培训

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字符串的更多相关文章

  1. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  2. (转)Java字符串

    转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...

  3. Java字符串split函数的注意事项

    Java字符串的split方法可以分割字符串,但和其他语言不太一样,split方法的参数不是单个字符,而是正则表达式,如果输入了竖线(|)这样的字符作为分割字符串,会出现意想不到的结果, 如, Str ...

  4. 关于java字符串编译优化问题

    情景一:不好的字符串拼接习惯    起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...

  5. Java字符串排列算法

    Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...

  6. Java字符串转换

    public class StringConvertToInt{ public static void main(String[] args) { String a ="12a34bW()5 ...

  7. Java字符串null相加

    Java字符串null相加 最近和同事讨论了下面的一段代码: String a = null; a += a; System.out.println(a); 运行结果: nullnull 本着学习的态 ...

  8. JAVA字符串格式化String.format()的使用

    JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...

  9. Java字符串的10大热点问题,你都懂吗?

    转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...

随机推荐

  1. Bootstrap学习之起步

    安装Bootstrap环境 从 http://getbootstrap.com/ 上下载 Bootstrap 的最新版本.我下载的是预编译版,即下图中的第一个. 将其解压缩到任意目录即可看到以下(压缩 ...

  2. uva 10817(状压dp)

    题意:就是有个学校要招老师.要让没门课至少有两个老师可以上.每个样样例先输入三个数字课程数量s,已经在任的老师数量,和应聘的老师数量.已经在任的一定要聘请. 思路是参考了刘汝佳书上的,关键如何状压. ...

  3. Orchard中codegen相关命令

    Orchard开放了命令行功能,用于在快速创建代码. 由于该功能默认没有开启.系统中提供两种开启方式: 1.进入管理后台->Modules->找到[Code Generation]-> ...

  4. 工具 cocoapods和插件

    命令行更新(安装)步骤 $ sudo gem update --system // 先更新gem,国内需要切换源 $ gem sources --remove https://rubygems.org ...

  5. Jquery开灯关灯效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 【FPGA】【代码】资源优化,结构优化

    资源优化 原始资源 定义时初始化和复位电路初始化都起作用,删除定义的初值后 将always块描述的组合逻辑变为时序逻辑后

  7. 利用WPS 2012/2013 0day针对中国政府部门的定向攻击

    今天早上,我们捕获到一个利用wps 2012/2013 0day针对中国政府部门的钓鱼邮件定向攻击事件. 邮件发件人以2014中国经济形势解析高层报告组委会 标题发出,附件为包含wps2012 0da ...

  8. Fortran版MPI_barrier出现错误可能情况

    在Fortran中的MPI_开头函数都常有一个整数型的错误变量用以函数返回错误信息.如: call MPI_Barrier(MPI_COMM_WORLD,ierr) 在没有ierr参数时,程序可能会出 ...

  9. vultr vps服务器存在的7个优势及选择原因

    原本准备在第一篇文章的时候完整的新注册账户的,但是考虑到对于这款VPS主机的了解,还是先整理这篇关于网络上和我自己在使用vultr vps主机产品的时候可能自认为的优势之处,这样可以加强很多新用户对于 ...

  10. selenium配置

    1.firebug安装--火狐插件 2.firepath安装--火狐插件 3.