今晚重新学了一下java字符串的知识,使自己了解到自己以前忽略了不少问题。学习java字符串,至少要了解到以下几点:
1、学会使用String类中的常用方法
2、了解字符串的不可变量特性
3、什么是字符串池
4、==与equals()方法比较两字符串的不同点。
5、"+"使用字符串串联上的负担,区分出StringBuilder和StringBuffer的使用场所
java字符串池:
字符串池",是Java为了提高内存利用率而采用的措施:当遇到String a = "Hello"; 这样的语句时,Java会先在字符串池中寻找是否已经存在"Hello"这个字符串,如果没有,则建立字符串"Hello"对象,然后变量 a 指向这个地址;然后遇到语句String b = "Hello",这时字符串池中已经有 "Hello"了,所以直接让变量b也指向这个地址,省去了重新分配的麻烦。而在Java中,操作符"=="对于两个基本型来说,是判断其内容是否相同,对于两个对象来说,则是判断其地址是否相同,所以a == b返回 true。那么String c = new String("Hello")又如何处理呢?如果是这种写法,则不会去访问字符串池,而是先为变量 c 开辟空间,然后将值写入空间。所以a == c返回false,c == d同样返回false。至于String的equals方法,因为它比较的不是对象的地址,而是对象的值,所以都返回true就不奇怪了。
Java虚拟机有一个字符串池,保存着几乎所有的字符串对象。字符串表达式总是指向字符串池中的一个对象。使用new操作创建的字符串对象不指向字符串池中的对象但是可以使用intern方法使其指向字符串池中的对象(注:如果池中已经有相同的字符串--使用equals方法确定,则直接返回池中的字符串,否则先将字符串添加到池中,再返回)。池中两个相等的字符串如果使用"=="来比较将返回真。
StringBuilder类:
一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符至String对象中。可以使用+来串联字符串以达到新字符或字符串的目的。但+会产生一个新的String实例。如果程序对这种附加字符串的需求很频繁,效率会变低。使用StringBuilder比String用+的方法效率会高。
StringBuffer类:
在J2SE 5.0之前,使用java.lang.StringBuffer来串联字符串,后来,在J2SE 5.0的时候,新增了StringBuilder,和StringBuffer具有相同的操作接口。在单机非多线程的情况下使用StringBuilder会有较好的效率,因为StringBuiler没有处理同步(Synchronized)问题。而StringBuffer则会处理同步问题,如果StringBuidler会在多线程下被操作,则要改用String Buffer,让对象自行管理同步问题。
发表评论
-
正则在JS中的使用
2012-07-06 09:45 730在Javascript里,有两 ... -
正则表达式
2012-07-06 09:37 834正则表达式基础: import java.util.reg ... -
PeopleSoft Rich Text Boxes上定制Tool Bars
2012-07-06 09:30 1038在使用PT8.50或在8.51时,你可能遇到过Rich-t ... -
showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时
2012-07-05 20:45 804showModalDialog使用例子,父窗口向子窗口 ... -
对View组件touch事件响应的理解
2012-07-03 13:43 893Android响应View组件的touch事件通常是采用重 ... -
twaver-flex效率与性能测试
2012-07-02 12:22 635测试环境: 测试一 节点:创建图片节点; 连 ... -
Flex 中List控件的使用,绑定XML!
2012-07-02 12:21 575效果图: Flex代码如下: flex/sp ... -
Flex3 做界面与 VC交互
2012-07-02 12:21 777Flex3 代码 height="290&qu ... -
flex用弹出窗体展示gif
2012-07-02 12:21 561GIFPlayer用于在flex中展示GIF图片。 ... -
使用Flash Catalyst创建Flex 4主题(二)
2012-07-01 09:56 992Adobe Flash Builder 4 简体中文正式版 ... -
关于flex的资料
2012-07-01 09:55 1959====Adobe官方==== Adobe : ... -
IDEA + Eclipse 开发 Maven Flex 项目的简单流程和要点
2012-07-01 09:55 950写在前面: ... -
请问大家如果买笔记本电脑会选择什么牌子的?
2012-06-30 16:20 1291请问大家如果买笔记本 ... -
笔记本电视
2012-06-30 16:20 595笔记本电视 2011年04月11日 笔记本电视 ... -
各品牌笔记本特点
2012-06-30 16:20 984各品牌笔记本特点 2011 ... -
选购笔记本的建议
2012-06-30 16:20 623选购笔记本的建议 2011年08月22日 笔记本的三个 ...
相关推荐
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段...
String ,StringBuffer与StringBuilder的区别
String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要...
答:Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类...
在Android/Java开发中,用来处理字符串常用的类有3种: String、StringBuilder、StringBuffer。 它们的异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer、...
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧
目录StringStringBuffer与StringBuilder总结 String 官方解释: String类是不可变类,即一旦一个...这两者基本相似,都是可变字符串对象,主要区别为线程是否安全。 总结 最后,引用菜鸟教程下的总结以及相关评论: S
java字符串三种处理方式区别String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)
Java中的StringBuffer和StringBuilder类是用于处理字符串的可变对象; 它们与String类类似,但是不同之处在于,StringBuffer和StringBuilder可以修改字符串内容,而String对象是不可变的; StringBuffer和...
String和StringBuilder和StringBuffer,这三个都是值得深究一翻的,可能很多人会说,实在不行的话,都全部用StringBuilder,啥事没有,我不能说你的想法事不正确的,但是我可以给出更好的建议。下面简单介绍一下这三...
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 在使用 StringBuffer 类...
里将为大家来辨析Java中的String与StringBuffer及StringBuilder字符串类型,通常来说StringBuilder的性能更加,需要的朋友可以参考下
我们都知道,在Java中字符串可以用+连接,也可以使用StringBuilder或StringBuffer连接。 String str = abc+xyz; 那么这几种方式由什么区别呢。当然你可能会知道以下几点 String是只读字符串,String引用的字符串...
在Java中,String类和StringBuffer类以及StringBuilder类都能用于创建字符串对象,而在分别操作这些对象时我们会发现JVM执行它们的性能并不相同,下面我们就来详细分析Java中String、StringBuffer、StringBuilder类的...
我们先用一张表格来回顾一下Java中String,StringBuilder,StringBuffer关于值可变性、线程安全性、时间性能排序、常用场景等主要区别。见下表: 数据类型 值可变性 线程安全性 时间性能排名 常用场景 String...
String字符串操作类的源码资源适用于具有编程基础的开发者,特别是那些需要对字符串进行各种操作和处理的开发者。 使用场景 该源码资源适用于任何需要对字符串进行处理的场景,包括但不限于文本分析、数据清洗、...
//true}补充:String对象的intern方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与String对象的equals结果是
Java的StringBuffer和StringBuilder类是用于字符串操作的可变字符序列类。本文将介绍Java StringBuffer和StringBuilder类的常见操作和用法,包括创建、追加、插入、删除、替换、反转等操作。我们还会讨论如何获取...
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) ... StringBuffer:是一个可变字符串序列,它与 String 一样,在内存中保存的都是一个有序的字符串序列(ch