黑马----JAVA字符串
黑马程序员: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字符串的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- (转)Java字符串
转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...
- Java字符串split函数的注意事项
Java字符串的split方法可以分割字符串,但和其他语言不太一样,split方法的参数不是单个字符,而是正则表达式,如果输入了竖线(|)这样的字符作为分割字符串,会出现意想不到的结果, 如, Str ...
- 关于java字符串编译优化问题
情景一:不好的字符串拼接习惯 起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...
- Java字符串排列算法
Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...
- Java字符串转换
public class StringConvertToInt{ public static void main(String[] args) { String a ="12a34bW()5 ...
- Java字符串null相加
Java字符串null相加 最近和同事讨论了下面的一段代码: String a = null; a += a; System.out.println(a); 运行结果: nullnull 本着学习的态 ...
- JAVA字符串格式化String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...
- Java字符串的10大热点问题,你都懂吗?
转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...
随机推荐
- continue用法
之前,一直没搞懂continue的用法,现在知道其中一个了: continue语句用于终止本轮循环,返回循环头部,开始下一轮循环 var i = 0; while (i < 10){ i++; ...
- 为更好地设计数据库,重新整理sql server数据类型
我们在平常开发过程中,在设计数据的时候,经常碰到数据类型选择的问题,为了更快,更合适地选择正确的数据类型,所以在这里做个总结. 分类 sql server 数据类型 c# 数据类型 描述 应用场景 字 ...
- Ionic 的 ng-class 在聊天功能上面的巧妙运用
很多人在问我是ionic好呢?还是react好呢? 其实我只想告诉你去看文档啊,不用用怎么知道哪个合适呢? 嘿嘿但是真的这么问的时候我也不会这么回答的,那岂不是太张狂了哈哈哈 react我确实没有用过 ...
- Scala 学习笔记(五)
def main(args : Array[String]): Unit = { def add(x:Int,y:Int):Int = { return x+y; } def subtract:(In ...
- cloudfoundry上搭建go服务端
虽然只有60天试用期,我还是把教程公布一下: 1. 注册一个cloudfoundry账号 https://console.run.pivotal.io/register 2. 安装CLI部署工具包 h ...
- 一、Python 简介
There should be one -- and preferably only one -- obvious way to do it. 一种解释型,面向对象的.带有动态语义的高级程序设计语言. ...
- Copy page via powershell and not save as template 分类: Sharepoint 2015-07-16 16:39 4人阅读 评论(0) 收藏
By save as template informaton of the page get lost, e.g. permissions. To avoid this, use powershell ...
- Qt之C语言有符号数与无符号数运算
以32位的stm32f4为例: 1. uint32_t t_int_k = 239773, t_int_km1 = 4294859707; 则t_int_k - t_int_km1 > 0; ...
- SQL Server中查询某个数据库中表的个数
--SQL Server中 数表: SELECT * FROM SYSOBJECTS WHERE xtype = 'U'; SELECT COUNT(*) FROM SYSOBJECTS WHERE ...
- 【visio 2007操作】
1.visio改变画布大小 两种方法:1)按住ctrl,可以鼠标拉动调整背景绘图大小2)点击菜单栏“文件”-“页面尺寸”,选择“调整大小以适应绘图内容”并点击确定