黑马程序员_String类

时间:2022-08-27 08:40:31

----------- android培训java培训、java博客、java学习型技术博客、期待与您交流! --------------



本章主要的知识点总结:1String类的简介,如何创建字符串。

                                        2、字符串常见方法:增删改查等

                                        3StringBuffer类的作用和常见方法

                                        4StringBuilder的作用,它和StringBuffer类的区别



   

一、String类的简介


           String类位于包java.lang内,直接继承Object类,是final类,不能有子类。Java1.6版本的API文档对String类有如下描述:

      public final class String   extends Object

       implements Serializable,Comparable<String>, CharSequence

        String 类代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作为此类的实例实现。

       字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

    下面结合API文档,谈一下String类:

      (1)一系列连续字符组成的一个序列,叫字符串,字符串对象允许为空(不是指该字符串的引用为null),也就是没有字符。

         生活中很多数据的描述都采用的是字符串的,而且我们还会对其进行操作。 所以,Java就提供了这样的一个类供我们使用。

      (2)创建字符串对象

              1、String():初始化一个新创建的 String 对象,使其表示一个空字符序列。

                      String s = new String();

              2、String(byte[] bytes): 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的String。 

                       byte[] bytes = {1, 2, 3};

                       String s = new String(bytes); 

              3、String(byte[] bytes, Charset charset):通过使用指定的 charset 解码指定的 byte 数组,构造一                       个新的String。

                      byte[] bytes = {1, 2,3};

                       Charset charset =Charset.forName(“UTF-8”);

                       String s = new String(bytes, charset);

              4、String(byte[]bytes,int index,int length): 通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。   

                       byte[] bytes = {1, 2, 3};

                       String s = new String(bytes,1,2);

             5、 String(byte[] bytes, int offset,int length, Charset charset) :通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的String。                   

              6、String(byte[] bytes, int offset, int length, String charsetName) : 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的String。

                      byte[] bytes = {1, 2, 3};

                      String str = “UTF-8”;

                       String s = new String(bytes,1,2,str);

              7、 String(byte[] bytes, String charsetName):  通过使用指定的 charset 解码指定的 byte 数组,构                      造一个新的String。                    

              8、 String(char[] value) :  分配一个新的 String,使其表示字符数组参数中当前包含的字符序列                   

             9、String(char[] value, int offset,int count): 分配一个新的 String,它包含取自字符数组参数一个                            子数组的字符。                     

            10、String(int[] codePoints, int offset, int count):分配一个新的 String,它包含 Unicode 代码点数                             组参数一个子数组的字符。                    

              11、String(String original) :初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序                          列;换句话说,新创建的字符串是该参数字符串的副本。

                        String s = new String(“Iam a string”);

              12、String(StringBuffer buffer) :分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字                             符序列。

                        StringBuffer sb = newStringBuffer(“a string”);

                        String s = new String(sb); 

              13、String(StringBuilder builder):分配一个新的字符串,它包含字符串生成器参数中当前包含的                    字符序列。

String类的小例子  :                                    

              A:请问String s = new String("hello");创建了几个对象。

                         两个。一个"hello"字符串对象,一个s对象。

              B:请写出下面的结果

                    String s1 = new String("abc");

                     Strign s2 = new String("abc");

                     String s3="abc";

                     String s4="abc";

                     System.out.println(s1==s2);  //false

                     System.out.println (s1==s3);  //false

                     System.out.println (s3==s4);  //true

              C:字符串对象一旦被创建就不能被改变。

                 指的是它们的值在创建之后不能更改,并非指该字符串对象的引用不可以指向别的字符串对象。


 二、字符串中各种功能的方法

        A:判断

                boolean equals(ObjectanObject):判断两个字符串的内容是否相同

                boolean equalsIgnoreCase(StringanotherString):判断两个字符串的内容是否相同,不区分大小写

                boolean contains(String s):判断一个字符串中是否包含另一个字符串

                boolean endsWith(Stringsuffix):测试此字符串是否以指定的后缀结束

               booleanstartsWith(Stringsuffix):测试此字符串是否以指定的前缀开始

                boolean isEmpty():测试字符串是否为空

         B:获取

                int length():返回此字符串的长度

                char charAt(int index):返回指定索引处的 char值

                int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。

                int indexOf(int ch,intfromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引                         开始搜索。

                int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。

                int indexOf(String str,intfromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定                         的索引开始。

                int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。

                int lastIndexOf(int ch,intfromIndex):返回指定字符在此字符串中最后一次出现处的索引,从指定                          的索引处开始进行反向搜索。

                int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。

                int lastIndexOf(String str,intfromIndex):返回指定子字符串在此字符串中最后一次出现处的索                                引,从指定的索引开始反向搜索。

                Stringsubstring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。

                String substring(intbeginIndex,int endIndex):返回一个新字符串,它是此字符串的一个子字符                                      串。

       C:转换

               byte[ ] getBytes():从字符串到字节数组的方法。

                char[ ] toCharArray():从字符串到字符数组的方法。

                static StringcopyValueOf(char[]data):返回指定数组中表示该字符序列的 String。

                static StringcopyValueOf(char[]data, int offset, int count):返回指定数组中表示该字符序列的                             String。

                staticString valueOf(数据类型):把该数据类型的数据转换成字符串。

                String toLowerCase():把字符串转换成小写。

                String toUpperCase():把字符串转换成大写。

      D:替换

                String replace(charoldChar,char newChar):用新字符替换旧字符。

                String replace(Stringtarget,String replacement):用新的子串换旧串。

        E:分割

                String[] split(Stringregex):根据指定的字符串把一个字符串分割成一个字符串数组

       F: Stringtrim():去除字符串的前后空格

       G:比较

  int compareTo(String,anotherString):按字典顺序比较两个字符串。

                 int compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写。

        H:连接

                String concat(String str):将指定字符串连接到此字符串的结尾。


三、StringBuffer类

            StringBuffer是一个容器,是字符串缓冲区,可以对字符串改变。长度可变,可以操作多个数据类型,最终会通过toString方法变成字符串。

 1、存储

           StringBuffer append( ):将指定数据数据作为参数,添加到已有数据结尾处

            StringBuffer insert(index,String str ):可以将数据插入到指定index位置

2、删除

          StringBuffer  delete(start,end): 删除缓冲区的数据,包头不包尾

          StringBuffer  deleteCharAt(index): 删除指定位置的字符

3、获取

               char charAt(index)

              int indexOf(String str)

              int lastIndexOf(String str)

                 int length()

                String substring(int start,int end)

4、修改

             StringBuffer  replace(int start,int end,string)

             void setCharAt(int index,char ch)

5、反转

              StringBuffer reverse( )

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

              将缓冲区的指定数据存储到指定数组中


JDK1.5后出现StringBuilder

          StringBuilder是线程不同步,效率较高,在单线程情况下使用。

        StringBuffer线程同步,在多线程下使用,效率较低。

升级三要素:提高效率

                    简化书写

                    提高安全性