`
vpfs45vpfs
  • 浏览: 14978 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

java字符串学习:String,StringBuilder,StringBuffer的学习

 
阅读更多

  今晚重新学了一下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,让对象自行管理同步问题。
分享到:
评论

相关推荐

    String,StringBuffer,StringBuilder区别

    String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的

    String、StringBuffer与StringBuilder之间区别

    String:字符串常量  StringBuffer:字符创变量  StringBuilder:字符创变量  从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段...

    String ,StringBuffer与StringBuilder

    String ,StringBuffer与StringBuilder的区别

    Java 中操作字符串都有哪些类?它们之间有什么区别?

    String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要...

    java--面试题大全(附答案

    答:Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类...

    Java String StringBuilder StringBuffer

    在Android/Java开发中,用来处理字符串常用的类有3种: String、StringBuilder、StringBuffer。  它们的异同点:  1) 都是 final 类, 都不允许被继承;  2) String 长度是不可变的, StringBuffer、...

    Java中String、StringBuffer、StringBuilder的区别详解

    java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧

    你知道String、StringBuffer和StringBuilder的区别吗

    目录StringStringBuffer与StringBuilder总结 String 官方解释: String类是不可变类,即一旦一个...这两者基本相似,都是可变字符串对象,主要区别为线程是否安全。 总结 最后,引用菜鸟教程下的总结以及相关评论: S

    java三种字符串处理差别

    java字符串三种处理方式区别String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)

    Java StringBuffer & StringBuilder.pdf

    Java中的StringBuffer和StringBuilder类是用于处理字符串的可变对象; 它们与String类类似,但是不同之处在于,StringBuffer和StringBuilder可以修改字符串内容,而String对象是不可变的; StringBuffer和...

    C#中String StringBuilder StringBuffer类的用法

    String和StringBuilder和StringBuffer,这三个都是值得深究一翻的,可能很多人会说,实在不行的话,都全部用StringBuilder,啥事没有,我不能说你的想法事不正确的,但是我可以给出更好的建议。下面简单介绍一下这三...

    StringBuffer 和 StringBuilder 类

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。   在使用 StringBuffer 类...

    辨析Java中的String与StringBuffer及StringBuilder字符串类

    里将为大家来辨析Java中的String与StringBuffer及StringBuilder字符串类型,通常来说StringBuilder的性能更加,需要的朋友可以参考下

    Java字符串连接原理

    我们都知道,在Java中字符串可以用+连接,也可以使用StringBuilder或StringBuffer连接。 String str = abc+xyz; 那么这几种方式由什么区别呢。当然你可能会知道以下几点 String是只读字符串,String引用的字符串...

    详细分析Java中String、StringBuffer、StringBuilder类的性能

    在Java中,String类和StringBuffer类以及StringBuilder类都能用于创建字符串对象,而在分别操作这些对象时我们会发现JVM执行它们的性能并不相同,下面我们就来详细分析Java中String、StringBuffer、StringBuilder类的...

    Java-String&StringBuilder&StringBuffer的区别与分析

    我们先用一张表格来回顾一下Java中String,StringBuilder,StringBuffer关于值可变性、线程安全性、时间性能排序、常用场景等主要区别。见下表: 数据类型 值可变性 线程安全性 时间性能排名 常用场景 String...

    Java的String类讲解案例代码(String类使用:创建对象、比较、连接、截取、查找和替换、拆分...)StringBuf

    String字符串操作类的源码资源适用于具有编程基础的开发者,特别是那些需要对字符串进行各种操作和处理的开发者。 使用场景 该源码资源适用于任何需要对字符串进行处理的场景,包括但不限于文本分析、数据清洗、...

    String和StringBuilder、StringBuffer的区别1

    //true}补充:String对象的intern方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与String对象的equals结果是

    面试题java StringBuffer和StringBuilder类常见操作和用法

    Java的StringBuffer和StringBuilder类是用于字符串操作的可变字符序列类。本文将介绍Java StringBuffer和StringBuilder类的常见操作和用法,包括创建、追加、插入、删除、替换、反转等操作。我们还会讨论如何获取...

    浅谈Java字符串

    我们先要记住三者的特征:  String 字符串常量  StringBuffer 字符串变量(线程安全) ...  StringBuffer:是一个可变字符串序列,它与 String 一样,在内存中保存的都是一个有序的字符串序列(ch

Global site tag (gtag.js) - Google Analytics