黑马程序员: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. mysql分表技术(学习心得)

    (最近在学习mysql优化的一些问题,以下为个人一些收获,如有不足,敬请提出!) 概述:当一个表的数据很大,比如200G,这时太大,我们只靠索引也不好使了,这时我们需要分表和分区处理.分表有两种形式( ...

  2. shell脚本中的几个括号总结(小括号/大括号/花括号)--from:http://www.cnblogs.com/hanyan225/archive/2011/10/06/2199652.html

    在Shell中的小括号,大括号结构和有括号的变量,命令的用法如下: 1.${var}2.$(cmd)3.()和{}4.${var:-string},${var:+string},${var:=stri ...

  3. tfs中如何创建团队项目及如何操作团队项目

    创建团队项目集合 tfs server管理控制台\团队项目集合页面.选择'创建集合'链接,按向导即可创建项目集合. 创建团队项目 创建好团队项目集合后,就要开始创建团队项目了. 进入vs,连接上tfs ...

  4. 在ubuntu中安装psutil

    环境:ubuntu 16.04 LTS + python 2.7/3.5共存 + psutil 4.3.0 1.sudo apt-get install python3-dev # 先把python3 ...

  5. CSS3回执特殊图形

  6. IIS7 WebAPI 404.0 Error

    <system.webServer><modules runAllManagedModulesForAllRequests="true"/></sys ...

  7. 《数据结构》2.3单链表(single linked list)

    //单链表节点的定义 typedef struct node { datatype data; struct node *next; }LNode,*LinkList; //LNode是节点类型,Li ...

  8. css 之 1.基本语法规范

    文章转自:http://www.10wy.net/Article/CSS/CSS_list_8.html查看更多更专业性的文章请到:网页设计网 第一篇 CSS 1.基本语法规范 分析一个典型CSS的语 ...

  9. Access restriction: The type TaskTopicResolver is not accessible due to restrict

    Access restriction: The type TaskTopicResolver is not accessible due to restrict :  Eclipse 默认把这些受访问 ...

  10. android 加载中、无网络、无数据、出错 四种状态的代码封装

    package com.weavey.loading.lib;import android.content.Context;import android.content.res.TypedArray; ...