java 2011-03-07(下)(我要过节啊啊啊啊啊啊)

    技术2022-05-19  36

                                        字符串

      java语言中的java.lang包中提供了两种类型的字符串类来处理字符串,它们是String类和StringBuffer类。对于一个字符串来说,

    如果创建之后不需要改变,我们称之为字符串常量,String类就是用来存储和处理字符串常量如果一个字符串创建之后需要对其进

    行改变,则称之为字符串变量,StringBuffer类就是用于存储和处理字符串变量。

     

        与其他编程语言不同的是,java中的字符串和数组都是java中的类,而不是基本的数据类型。

     

        1.String类

          1.1创建string类对象

               在java语言中,创建String字符串的方法很多,这些方法成为String的构造方法,即用什么方法来生成String类的对象。

               String str = new String();//生成空字符串

               String str = new String("mystring");//通过传递参数生成一个字符串

               String str = new String(char tmp[]);//通过字符数组来生成一个字符串对象

               String str = new String(char tmp[]. int startindex . int char number);

               //通过字符数组的一部分来生成一个字符串对象,startindex代表字符串在数组中的起始位置,charnumber代表包含的字符个数

           

              由于java编译器会自动为每一个字符串常量生成一个String类的实例,因此字符串常量String有一个非常好的构造方法,只需用双引号括起一串字符即可直接初始化一个string对象。eg.String str="mystring";

     

              使用双引号得到的其实已经是一个string类的对象,而new String(String)构造方法是对传入的参数String创建一个副本,这样的形式实际上是创建了两个String对象,性能是不划算的,应避免使用。

     

     

          1.2操作String类对象

              int length()  返回字符串长度,汉字也算一个字符

              char charAt(int index)返回index+1位置的字符

              int compareTo(String str)按字符顺序进行字符串比较

              boolean equals(Object obj)和boolean equalIgnoreCase(String str)

              判断字符串是否相等,前者区分大小写,后者不区分大小写

              int indexOf(String str)和int lastIndexOf(String str)

              返回字符串第一次出现str的位置,前者返回从前往后第一次出现str的位置,后者返回从后往前第一出现str的位置

              boolean startsWith(String prefix)和boolean endsWith(String sufix)

              前者判断该字符串是否以prefix为前缀,后者判断该字符串是否以sufix为后缀

              char []toCharArray()

              将字符串转为字符数组

     

           1.3修改String类对象

                String toLowerCase() String toUpperCase()

                前者将字符串中所有大写字母转为小写,后者将字符串中所有小写转为大写

                String substring(int began index ) String substring(int beganindex,int endindex)

                这两个方法用来得到给定的字符串中指定的字符子串

                replace(char ochar,char nchar)

                将字符串中所有的ochar替换为nchar

                concat(String otherstring)

                用于将当前字符串与给定字符串连接起来

              提示: 对给定字符串的各种修改操作并不会改变原有字符串的值。String对象是不可改变的,任何涉及到对String

              类所表示字符串操作的方法,都是返回一个新创建的String对象,因此,在对一个String对象的使用中,往往会创建

             大量并不需要的string实例,消耗了不必要的系统资源。

       

        

          2.StringBuffer类

             2.1创建StringBuffe类对象

                  StringBuffe()创建一个空的StringBuffe对象

                  StringBuffe(int length)设置初始容量

                  StringBuffe(String str)利用已有的String对象来初始化StringBuffer对象

             2.2StringBuffe类成员方法

                  append(StringBuffer sb)

                  insert(int index,substring)

                  delete(int index,int end)

                  void setCharAt(int index.char c)

                  String toString()

                  将字符串变量StringBuffer转换为字符串常量String

           提示:因为System.out.println()方法是不能接受可变串的,因此在打印StringBuffer之前要使用toString()方法将其转换为String

           COMPARATION:

            StringBuffer本质上是一个字符数组的操作封装,与String相比,任何修改性的操作都是在同一字符数组上进行的,而不像String那样为了线程访问安全创建大量副本对象。因为,如果是一段需要在一个字符串上进行操作的代码,推荐使用StringBuffer来提高性能。当然如果不考虑性能的话,可以全部选择String进行操作。

            

             

             


    最新回复(0)