您的位置:首页 > 产品设计 > UI/UE

黑马程序员——03 String,StringBuffer,StringBuilder的联系以及三者的常用方法

2014-06-27 15:08 567 查看
------- android培训java培训、期待与您交流! --------


一、三者之间的异同:

String:为了提高对字符串进行操作的效率,创建了StringBuffer、StringBuilder,字符串操作效率低的原因就在于每次更改一次字符串都要的创建一个新的字符串对象

StringBuffer:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区。

StringBuilder:不保证同步,在大多数实现中,它比 StringBuffer 要快,但不安全。

该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类。

二、三者之间的相互转换

       String 转换成 StringBuffer与StringBuilder,一般采用后面两者的构造方法。

       StringBuffer与StringBuilder转换成String都采用toString()方法。

三、StringBuffer与StringBuilder最常用的方法就是append()与Insert(),前者可以添加各种数据类型和数组,后者将各种数据类型和数组插入到制定位置。

[java] view
plaincopy





  

[java] view
plaincopy





        String s = "abcdefg";  

       StringBuffer sbf = new StringBuffer(s);//将字符串转换为StringBuffer  

       StringBuilder sbd = new StringBuilder(s););//将字符串转换为StringBuilder  

          //StringBuffer、StringBuilder最常用的方法就是appendsbf.append("A");  

        sbd.append("B");  

          

        sbf.insert(3, "C");  

        sbd.insert(0, "D");  

          

        sbf.reverse();//将内容翻转  

        sbd.reverse();  

          

        System.out.println(sbf);//AgfedCcba  

        System.out.println(sbd);//BgfedcbaD  

          

        String  s1 = sbf.toString();//转换为字符串  

        String  s2 = sbd.toString();  

        System.out.println(s1.getClass());//class java.lang.String 说明转换成了String类型  

[java] view
plaincopy





// StringBuilder与StringBuffer具有相同的API,所以他们的方法大部分都一样  

[java] view
plaincopy





        //将StringBuilder的内容添加到指定数组的指定位置  

          char[] ch = new char[sbd.length()];  

          sbd.getChars(0, sbd.length(), ch, 0);//要注意的是前两个参数是要复制的字符串的范围,是个                         //左闭右开的区间  

          for (char c : ch)  

          {  

             System.out.print(c);  

          }  

四、String的常用方法:

       4.1 String与基本数据类型和数组之间的转换

            4.1.1 整形,浮点型,字符型,boolean型转换成String类型,利用String的静态方法: valueOf(数据类型 d)。

            4.1.2 String转换字符数组和字节数组:

                                                                    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

                                                                    将字符从此字符串复制到目标字符数组。

                                                                    byte[] getBytes()

                                                                    使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到

                                                                    一个新的Byte数组中。

[java] view
plaincopy





int i= 56;  

String.valueOf(i);  

String.valueOf(ch);  

  

String string = "12345";  

byte[] b = string.getBytes();//字符串转为字节数组  

char[] ch2 ;  

string.getChars(0, string.length(), ch, 0);//字符串转为字符数组  

         4.2 String的其他常用方法:

boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束 boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束 boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束 boolean contains(CharSequence s) 

          当且仅当此字符串包含指定的 char 值序列时,返回 true。 

 boolean endsWith(String suffix) 

          测试此字符串是否以指定的后缀结束
 boolean equalsIgnoreCase(String anotherString) 

          将此 String 与另一个 String 比较,不考虑大小写。
 String[] split(String regex) 

          根据给定正则表达式的匹配拆分此字符串。 

 String[] split(String regex, int limit) 

          根据匹配给定的正则表达式来拆分此字符串。int compareTo(String anotherString) 

          按字典顺序比较两个字符串。 

 boolean endsWith(String suffix)      //此方法常用语TreeSet中复写copareTo方法

          测试此字符串是否以指定的后缀结束

 

--------- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息