Java--String字符串

一   字符串

      Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。

        1 字符串常量     如,“你好”,“1234.987”,“weqweo”

      2 声明字符串     String s

      3   创建字符串      使用String类的构造方法。

例如

         s=new String("we are students")  

也可以写成

           s="we are students"

声明和创建可用一步完成

         String s=new String("we are students");

        String s="we are students";

也可以用一个已创建的字符串创建另一个字符串,如

         String tom=String(s);

相当于

         String tom="we are students"

String类还有两个较常用构造方法

     1   String(char a[])用一个字符数组a创建一个字符串对象,如

         char a[3]={'b','o','y'};

         String s=new String(a);

上述过程相当于

            String s="boy";

      2       String(char a[],int startIndex,int count)    提取字符数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个 数,例如

            char a[]={'s','t','b','u','s','n'};

            String s=new String(a,2,3);

上述过程相当于

        String s="bus";

二    怎样获取字符串的长度

   使用String 类中的length()方法可以获取一个字符串的长度,如

                String s="we are students",tom="我们是学生";

                int n1,n2;

                n1=s.length();

               n2=tom.length();

那么n1的值是15,n2的值5。

字符串常量也可以使用length()获得长度,如"你的爱好".length()的值是4。

三   字符串比较

        1   equals方法

字符串对象调用String类中的public boolean equals(String s)方法比较当前字符串对象的实体是否与参数指定的字符串s的实体相同,如

            String tom=new String("we are students");

            String boy=new String("We are students");

            String jerry=new String("we are students");

tom.equals(boy)的值是false,tom.equals(jerry)的值是true。

注:tom==jerry的值是false。因为字符串是对象,tom,jerry是引用。内存示意如图:

             2      equalsIgnoreCase 方法

字符串对象调用public boolean equalsIgnoreCase(String s)比较当前字符串对象是否与参数指定的字符串s是否相同,比较时忽略大小写。如

         String tom=new String("ABC");

                   Jerry=new String("abc");

tom.equalsIgnoreCase(Jerry)的值是true。

           3    startsWith,endsWith方法

字符串对象调用public boolean startsWith(String s)方法,判断当前字符串对象的前缀是否是参数指定的字符串s,如

                String tom="220302620629021",jerry="21079670924022";

   tom.startsWith("220")的值是true,jerry.startsWith("220")的值是false。

可以使用public boolean endsWith(String s)方法,判断一个字符串的后缀是否是字符串s,如

           String tom="220302620629021",jerry="21079670924022";

tom.endsWith("021")的值是true,jerry.endsWith("021")的值是false。

   例子2:

         import java.applet.*;import java.awt.*;

         public class Example5_2 extends Applet

              {

                    String tom;

                     public void init()

                         {

                                tom="220302620629021";

                         }

            public void paint(Graphics g)

                     {

                         if((tom.startsWith("220302"))&&(tom.endsWith("1")||tom.endsWith("3")))

                         g.drawString("tom是吉林人,男性",10,10);

                      }

            }

      4     regionMatches方法

   字符串调用

     public boolean regionMatches(int firstStart,String other,int ortherStart,int length)方法,从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子串,并将这个子串和参数other指定的一个 子串进行比较,其中,other指定的子串是从参数otherStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串相 同该方法就返回true,否则返回false。

   使用该方法的重载方法

         public boolean regionMatches(boolean b,int firstStart,String other,int otherStart,int length)

   可以通过参数b决定是否忽略大小写,当b取true时,忽略大小写。

在下面的例子中,我们判断一个字符串中共出现了几个“en”

例子3:

      class Example5_3

         {

              public static void main(String args[])

                  {

                        int number=0;

                      String s="student;entropy;engage,english,client";

                      for(int k=0;k

                       {

                              if(s.regionMatches(k,"en",0,2))

                                  {

                                        number++;

                                  }

                       }

      System.out.println("number="+number);

                  }

         }

   5      compareTo,compareToIgnoreCase方法

      字符串对象可以使用String类中的public int compareTo(String s)方法,按辞典序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回值0,如果当前字符串对象大于s,该方法返回正值,如果小于s,该 方法返回负值。例如

       String str="abcde"

    str.compareTo("boy")小于0,str.compareTo("aba")大于0,str.compareTo("abcde")等于0.

按辞典序比较两个字符串还可以使用public int compareToIgnoreCase(String s)方法,该方法忽略大小写。

下面的例子一个字符串数组按字典序重新排列。

      例子4:

          class Example5_4

                {

                     public static void main(String args[])

                          {

                             String a[]={"boy","apple","Applet","girl","Hat"};

                             for(int i=0;i

                                   {

                                         for(int j=i+1;j

                                             {

                                                   if(a[j].copareTo(a[i])<0)

                                                          {

                                                                String temp=a[i];

                                                                 a[i]=a[j];

                                                                 a[j]=temp;

                                                          }

                                             }

                                     }

                   for(int i=0;i

                       {

                               System.out.print(" "+a[i] );

                        }

                          }

                }

四    字符串检索

      1   搜索指定串出现的位置

      · public int indexOf(String s)   字符串调用该方法从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值是-1.

    · public int indexOf(String s,int startpoint )    字符串调用该方法从当前字符串的startpoint位置处开始检索字符串s,并返回首次出现s的位置。如果同有检索到字符串s,该方法返回值是-1.

     ·   public int lastIndexOf(String s)   字符串调用该方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1.

    ·   public int lastIndexOf(String s,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1.

   例如:

               String tom="I am a good cat"

                tom.indexOf("a");   //值是2.

               tom.indexOf("good",2);         //值是7.

               tom.indexOf("a",7);       //值是13.

               tom.indexOf("w",2);      //值是-1.

   2    搜索指定字符出现的位置

   · public int indexOf(int char)   字符串调用该方法从当前字符串的头开始检索字符char,并返回首次现在char的位置。如果没有检索到字符char,该方法返回的值是-1.

· public int indexOf(int char,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回首次出现char的位置。如果没有检索到字符char,该方法返回的值是-1.

· public int lastIndexOf(int char ,int startpoint) 字符串调用该方法从当前字符串的startpoint位置处开始检索字符char,并返回最后出现char的位置,如果没有检索到字符char,该方法返 回值是-1.

五  字符串的截取

    · public String substring(int startpoint) 字符串对象调用该方法获得一个当前字符串子串,该子串是从当前字符串的startpoint处截取到最后所得到的字符串。

· public String substring(int start,int end) 字符串对象调用该方法获得一个当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end处所对应的字符。

如:

        String tom="I love tom";

         String s=tom.substring(2,5);

          s是lov

六     替换

   ·public String replace(char oldChar,char newChar) 字符串对象s调用该方法可以获得一个串对象,这个串对象是用参数newChar指定的字符替换s中由oldChar指定的所有字符而得到的字符串。

· public String replaceAll(String old,String new) 字符串对象s调用该方法可以获得一个串对象,这个串对象是通过用参数new指定的字符串替换s中由old指定的所有字符串而得到的字符串。

· public String trim() 一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。

   例如:

                    String s="I miss sheep";

                     String temp=s.replace( t , s )

Temp是“I miss sheep”.

                    String s=" I am a student ";

                    String temp=s.trim();

那么temp是“I am a student”。

七   字符串转化为相应的数值

1   转化为整型

    Java.lang包中的Integer类调用其类方法 public static int parseInt(Strint s)可以将“数字”格式的字符串,如“12387”,转化为int型数据。例如

                int x;

                String s="6542";

               x=Integer.parseInt("6542");

类似地,使用java.lang包中的Byte,Short,Long类调用相应的类方法

           public static byte parseByte(String s)

            public static short parseShort(String s)

          public static long parseLong(String s)

可以将“数字”格式的字符串,转化为相应的基本数据类型。例如

         int x;

         String s="6542";

         x=Integer.parseInt("6542");

2   转化为float型或double型

   java.lang包中的Float类调用其类方法

   public static int parseFloat (String s)

可以将“数字”格式的字符串,如“12387.8976”,转化为float型数据。例如

              float n=Float.parseFloat("12387.8976")

              String s=new String("12387.8976");

               float n=Float.parseFloat(s)

类似地,使用java.lang包中的Double类调用相应的类方法

           public static double parseDouble(String s)

可以将“数字”格式的字符串转化为double型数据。

   另外,还可以使用Float类的类方法:public static Float valueOf(String s)

将形如“12334.870”字符串转化为float型数据

例如

               float n=Float.valueOf("12334.870").floatValue()

使用Double类的类方法:public static Double valueOf(String s)

将形如“12334.870”字符串转化为double型数据,例如:

           double n=Double.valueOf("12334.870").doubleValue()

现在我们举一个求若干个数的平均数的例子,若干个数从键盘输入。

   例子5:

              public class Example5_5

                   {

                         public static void main(String args[])

                            {

                                   double n,sum=0.0;

                                 for(int i=0;i

                                    {

                                          sum=sum+Double.valueOf(args[i]).doubleValue();

                                   }

                       n=sum/args.length;

                    System.out.println("平均数:"+n);

                            }

                   }

    这是一个应用程序,应用程序中的main方法中的参数args能接受你从键盘键入的字符串,你首先应编译上述源程序     

           c:/2000/>javac Exampe5_5.java

编译通过后,你要使用解释器java.exe来执行你的字节码文件

        c:/2000/>java Example5_5 "123.78"   "23324.9"   "213214 "   (回车)

这时,程序中的args[0],args[1],args[2]分别得到字符串“123.78”“23324.9” “213214”.

在源程序中我们再将这些字符串转化为数值进行运算,得到所需的结果。

八     数值转化为字符串

     可以使用String类的下列类方法

          public String valueOf byte n

           public String valueOf int n

          public String valueOf long n

         public String valueOf float n

         public String valueOf double n

将形如123,1232.98等数值转化为字符串,如

                   String str=String.valueOf(12313.9876);

                 float x=123.987f;

                 String temp=String.valueOf(x);

九    对象的字符串表示

     在子类的讲述中我们讲过,所有的类都默认地是java.lang包中Object类的子类或间接子类。Object类有一个public方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。

                例子6:

                   import java.util.Date;

                   import java.awt.*;

                  public class Example5_6

                         {

                            public static void main(String args[])

                                 {

                                    Date date=new Date();

                                     Button button=new Button("确定");

                                     System.out.println(date.toString());

                                   System.out.println(button.toString());

                                 }

                        }

你可能感兴趣的:(Java)