• 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

           

                                       

  • 相关阅读:
    module.export和export
    netty学习
    I/O知识
    cxf+spring+数字签名开发webservice(二)
    cxf+spring+数字签名开发webservice(一)
    js作用域
    js继承
    js模块和级联
    python全栈_011_Python3基本数据类型--字典
    python全栈_010_Python3基本数据类型--元组
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/7327957.html
Copyright © 2020-2023  润新知