CharSequence与String以及stringbuffer与stringbuilder--Android学习笔记6-2

CharSequence与String以及stringbuffer与stringbuilder

前言:

    本文是由《TextView中的图文共存问题》延伸出来的知识点讲解;原文地址:《TextView图文共存问题》


1. CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。


2.CharSequence 这是一个接口,代表的是一个有序字符集合。

3.String 和 CharSequence 关系:


  ①. String 继承于CharSequence,也就是说String也是CharSequence类型。
  ②. CharSequence是一个接口,它只包括length(), charAt(int index), subSequence(int start, int end)这几个API接口。除了String实现了CharSequence之外,StringBuffer和StringBuilder也实现了CharSequence接口。
 

4.Android - CharSequence和String的比较和转换:


  CharSequence转换String:str = cs.toString();
  String转换CharSequence:cs = str;
  CharSequence和String类型的比较:cs.toString().equal(str);
  
5.stringbuffer与stringbuilder的区别:

 1. 在执行速度方面的比较:StringBuilder >  StringBuffer   
 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
 3. StringBuilder:线程非安全的
   StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结:1.如果要操作少量的数据用 = String
              2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
              3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

6.string与stringbuffer:


  个人觉得经典的区别就是:拼接
  ①. StringBuffer sb = new StringBuffer(); sb.append("abc").append("123");//sb是可变的,自身可变
  ②. String str = ""; str= "abc" + "123";//相当于 str = str1 + str2;
  
7.CharSequence与String对getText()的使用:

  安卓常用的控件的getText()方法不就是返回一个CharSequence值,而我们用的时候不都是:


    String value = v.getText().toString();//把CharSequence转化为String

    CharSequence ch = v.getText();

    

参考资料:

 

①. Java String之String和CharSequence、StringBuilder和StringBuffer的区别:点击打开链接


②. Android - CharSequence和String的比较和转换:点击打开链接


③. stringbuffer与stringbuilder的区别:点击打开链接




你可能感兴趣的:(android,CharSequence)