zoukankan      html  css  js  c++  java
  • Java的string类

    1.1声明字符串(在JAVA语言中必须包含一对双引号(“”)之内:  “23,23”,“ABCD”,“你好”

    String str=[null];

    String :指定该变量为字符串类型;

    str:任意有效的标识符;

    null:如果省略null,表示str变量是未初始化状态,否则表示声明的字符串的值等于null。(声明字符串变量必须经过初始化才可以使用,否则编译器会报出“变量未初始化错误”)。

    1.2创建字符串

    String(char a[]):用一个字符数组a创建String对象。

    char a[]={'h','e','l','l','o'};

    String s=new String(a);   等价于===》String a=new String("hello");

    String(char a[],int offset,int length):提取字符数组a的一部分创建一个字符串对象。参数offset为开始截取字符串的开始位置,length为截取字符串的长度。

    char a={'h'.'e','l','l','o'};

    String a=new String(a,2,3);  等价于===》String a=new String("llo");

    String(char[] value):该构造方法可分配一个新的String对象,使其表示字符数组参数的所有元素连接的结果。

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

    String a=new String(a);  等价于====》String a=new String("student");

    2 连接字符串

    2.1连接多个字符串:使用“+”可实现连接多个字符串的功能,“+”运算符可以连接多个运算符并产生一个String对象。

    eg:

    public class Join{

              public  static void main(String[]args){

                        String s1=new String("hello");

                       String s2=new String("world");

                       String s=s1+" "+s2;

                       System.out.println(s);

               }

    }

    输出结果:hello world

    2.2连接其他数据类型

    eg:

           public class Link{

                              public static void main(String[]args){

                                            int booktime=2;

                                             float pratice=2.5f;

                                             System.out.println("我每天花费"+booktime+"小时来看书!"+pratice+"小时来上机练习");

                                            }

    }          输出结果:我每天花费2小时来看书!2.5小时来上机练习

    2.3 获取字符串信息

    2.3.1获取字符串长度:  str.length();

         eg: String s="we are student";

                int size=s.length();===>size=15,备注:空格也代表字符串的长度

    2.3.2字符串查找  

    a:   str.indexOf(substr)            str:任意字符串对象                substr:要搜索的字符串

    String str="we are student";

    int size=str.indexOf("a"); ====>size=3     从0开始计算

    b:    str.lastIndexOf(substr)        返回指定字符串最后一次出现的索引位置。

    eg:

    public class Text{

                public static void main(String[]args){

                            String str="we are student";

                            int size=str.length();

                            int size1=str.indexOf("a");

                           int size2=str.lastIndexOf("t");

                           System.out.println("字符串str的长度"+size);

                            System.out.println("字符串str中a的位置:"+size1);

                            System.out.println("字符串str中t最后一次出现的位置:"+size2);

                           }

    }           运行结果:size=15,size=3 ,size=13

    3.3指定获取索引位置的字符

    charAt()可将指定索引处的字符返回

    charAt(int index): index:整型值,用于指定要返回的字符的下标。

    eg:

      public class Rel{

                    public static void main(String[]args){

                               String str="hello world";

                               char mychar=str.charAt(5);

                               System.out.println("字符串str中索引位置为5的字符为:"+mychar);

                                   }

    }     mychar="w";

    4:字符串操作

    4.1获取子字符串:通过string类中的substring()方法可对字符串进行截取,字符串的下标是从0开始的。

    a:   substring(int beginIndex)

      String str="Hello world";

      String s=str.substring(2);     等价于====》String s=new String("llo world");   在字符串中空格占用一个位置

    b:  substring(int beginIndex,int endIndex)

    deginIndex:开始截取字符串的索引位置;

    endIndex:结束位置

    eg:

     public class Subs{

                piblic static void main(String[]args){

                           String str="hello world";

                           String s1=str.substring(3);

                           String s2=str.substring(2,5);

                           System.out.println(s1);

                           System.out.println(s2);

    }

    }    等价于=====》s1="lo world";   s2="llo ";

    4.2去除空格

    trim()方法返回字符串的副本,忽略前导空格和尾部空格

    str.trim();

    eg:            

                  public class Blak{

                            public static void main(String[]args){

                                        String str=" java class ";

                                        String s=str.trim();

                                         System.out.println("字符串的长度:"+str.length());

                                        System.out.println("去掉空格的字符串长度:"+s.length());

                                    }

    }               str.length()=12    s.length()=10;

    4.3字符串的替换  replace()

    str.replace(char oldchar,char newchar);

    eg:

              public class NewStr{

                          public static void main(String[]args){

                                     String str="address";

                                     String s=str.replace("a","A");

                                     System.out.println(s);

           }

    }       

    输出结果:Address

    如果要替换的字符oldchar在字符串中出现多次,replace()方法会将所有的oldchar全部替换成newchar。

    4.4判断字符串的开始和结尾

    startsWith()和endsWith()方法用于判断字符串是否以指定的内容开始或者结尾,这两个方法返回的都是boolean值。

    str.startsWith(String s1);   str.endsWith(String s2);

       eg:

            public  class StartOrEnd{

                         public static void main(String[]args){

                                     String s1="2200012";

                                     String s2="21000078";

                                      boolean b,b1,b2,b3;

                                     b=s1.starstWith("22");

                                     b1=s1.endsWith("78");

                                     b2=s2.startsWith("22");

                                     b3=s2.endsWith("78");

                                    System.out.println(b);

                                      System.out.println(b1);

                                    System.out.println(b2);

                                    System.out.println(b3);

                   }

    }

    运行结果: true,false,false,true

     判断字符串是否相等

    对字符串对象进行比较不能简单地使用“==”,因为比较运算符比较的是两个字符字典的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的。

    equals()方法     str.equals(String str1)    其中str和str1是参加比较的两个字符串对象。equals()是区分大小写的;

    equalsIgnoreCase() 方法   str.equalsIgnoreCase(String str1)       ...............               equalsIgnoreCase()是不区分大小写的;

    eg:

            public class Opinion{

                       public static void main(String[]args){

                                  String s1=new String("abc");

                                  String s2=new String("ABC");

                                  boolean b=s1.equals(s2);

                                   boolean b1=s1.equalsIgnoreCase(s2);

                                  System.out.println(s1+"equals"+s2:"+b);

                                  System.out.println(s1+"equals"+s2:"+b1);

                              }

    }

    false,ture

    4.6按字典顺序进行比较

    compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串各个字符的Unicode值,按字典顺序将此string对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果此string对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此string对象位于参数字符串之后,则比较结果为一个正整数。r如果相等时,则返回0.

    str.compareTo(String other)

    eg:

         public class Wordbook{

                       public static void main(String[]args){

                                  String str=new String("b");

                                  String str1=new String("a");

                                   String str2=new String("c");

                                  System.out.println(str+"compareTo"+str1:"+str.compareTo(str1));

                                  System.out.println(str1+"compareTo"+str2:"+str1.compareTo(str2));

    }

    }

    1,-1

    4.7字母的大小转换

    toLowerCase():将大写字母转换成小写字母;

    toUpperCase();将小写字母转换成大写字母;

    备注:在转换时数字或非字母的字符不受影响。

    eg:

      public class UpAndLower{

                 public static void main(String[]args){

                            String str=new String("abc DEF");

                             String newStr=str.toLowerCase();

                            String newStr1=str.toUpperCase();

                            System.out.println(newStr);

                           System.out.println(newStr1);

       }

    }

    adc def;ABC DEF

    4.7字符串分割:

    split()方法可以使字符串按指定的分隔字符或字符串对其内容进行分割,并将分割后的结果存放在字符串数组中。split()方法提供了以下两种重载形式:

    split(String sign)    该方法可根据给定的分隔符对字符串进行拆分。语法:str.split( String sign).

    split(String sign,int limit) 该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法:str.split(String sign,int limit)

    eg:

          public class Division{

                     public static void main(String[]args){

                                 String str=new String("abc,def,ghi,jkl");

                                  String[]newstr=str.split(",");

                                 for(int i=0;i<newstr.length();i++){

                                      System.out.println(newstr[i]);

    }

                               String[] newstr2=str.split(",",2);

                               for(int i=0;i<newstr2.length();i++){

                                    System.out.println(newstr[i]);

    }

    }

    }

    (abc   def  ghi  jkl abc)第一次拆分结果           (def,ghi,gkl)第二次拆分结果

    4.8格式化字符串

    string类的静态format()的方法用于创建格式化的字符串。format()方法有两种重载形式:

    a: format(String format,Object....args)

    format:格式化字符串           args:格式字符串中由格式说明符引用的参数。

    b:format(Local l,String format,Object...args)

    l: 格式化过程中要应用的语言环境。如果l为null,则不进行本地化

    4.8.1日期和时间字符串格式化

    1日期格式化

    Date date=new Date();

    String s=new String.fromat("%te",date)

    常用的日期格式化转换符

    转换符 说明 示例
    %te 一个月中的某一天(1-31) 2
    %tb 指定语言环境的月份简称 Feb(二月)、二月(中文)
    %tB 指定语言环境的月份全称 February(二月)、二月(中文)
    %tA 指定语言环境的星期几全称 Monday(英语)、星期一(中文)
    %ta 指定语言环境的星期几简称 Mon(英语)、星期一(中文)
    %tc 包括全部日期和时间信息 星期二 三月 25 13:37:22 GST 2008
    %tY 4位年份 2008
    %tj 一年中的第几天(001-366) 085
    %tm 月份 03
    %td 一个月中的第几天(01-31) 02
    %ty 2位年份 08

    eg:

         import java.Util.Date;

         public class Eval{

                   public static void main(String[]args){

                               Date date=new Date();

                              String year=String.format("%tY",date);

                              String month=String.format("%tB",date);

                               String day=String.format("%td",date);

    .......}

    }

    year=2017,month=八月;day=10

     [^456]:代表4、5、6之外的任何字符

    [a-r]:代表a-r中的任何一个字符

    [a-e[g-z]]:代表a-e或g-z中任何一个字符(并运算)

    [a-o&&[def]]:代表d,e,f字符(交运算)

    [a-d&&[^bc]]:代表a,d(差运算)

    限定修饰符 意义 示例
    ? 0次或1次 A?
    * 0次或多次 A*
    + 一次或多次 A+
    {n} 正好出现n次 A{2}
    {n,} 至少出现n次 A{2,}
    {n,m} 出现n-m次 A{2,4}

    eg:

        public class Judge{

                  public static void main(String[]args){

                                 String regex="\w+@\w+(\.\w{2,3})*\.\w{2,3}";

                                 String str1="aaa@";

                                 String str2="aaaa";

                                 String str3="1111@11ffyu.dfg.com";

                                 if(str1.matches(regex)){

                                              System.out.println(str1+"是一个合法的邮箱地址");

                                }

                               if(str2.matches(regex)){

                                       System.out.println(str2+"是一个合法的邮箱地址");

                         }

                                 if(str3.matches(regex)){

                                     System.out.println(str3+"是一个合法的邮箱地址");

    }

    }

    }

    str3是一个合法的邮箱地址

    4.9字符串生成器        StringBuilder()

    eg:

     public class Jerque{

               public static void main(String[]args){

                        String str="";   //定义一个空的字符串

                       Long startTime=System.currentTimeMillis();      //定义对字符串执行操作的起始时间

                      for(int i=0;i<10000;i++){

                            str+=i;

                            }

                      Long endTime=System.currentMillis();                //定义字符串操作后的时间

                     Long Time=endTime-startTime;

                      System.out.println("String消耗的时间:"+Time);

                     StringBuilder builder=new StringBuilder("");            //创建字符串生成器

                     startTime=System.currenTimetMillis();                         //定义操作执行前的时间

                      for(int j=0;j<10000;j++){

                              builder.append(j);

                                 }

              endTime=System.currentTimeMillis();                    //定义操作后的时间

              time=endTime-starTime;

              System.out.println("StringBuilder消耗时间:"+time);

    }

    }

    String消耗时间:668

    StringBuilder消耗时间:2

    通过这一实例可以看出,两种操作执行的时间差距很大。如果程序中频繁的附加字符串,建议使用StringBuilder。若要使用StringBuilder最后输入的字符串结果,可使用toString()方法。

    (1)append()方法   该方法用于向字符串追加内容,通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char等

    append(content)

    (2)  insert(int offset,arg)方法    该方法用于向指定字符串生成器的指定位置插入数据内容。

    offfset:字符串生成器的位置。该参数必须大于0,小于等于此序列的长度。

    arg:将插入至字符串生成器的位置。该参数可以使任何数据类型或其他对象。

    StringBuilder bf=new String("hello");

    bf.insert(5,"world");

    System.out.println(bf.toString());=========>显示helloworld

    (3)delete(int start,int end)  移除此序列的子字符串中的字符。该子字符串从指定的位置start开始,一直所引到end-1处的字符,如果不存在这种字符,则一直到序列尾部,如果start等于end,则不会发生任何更改。

    StringBuilder bf=new StringBuilder("StringBuilder");

    bf.delete(5,10);

    System.out.println(bf.toString());=====>Strinder

           

                                       

  • 相关阅读:
    hlgoj 1766 Cubing
    Reverse Linked List
    String to Integer
    Bitwise AND of Numbers Range
    Best Time to Buy and Sell Stock III
    First Missing Positive
    Permutation Sequence
    Next Permutation
    Gray Code
    Number of Islands
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/7327957.html
Copyright © 2011-2022 走看看