CSDN博客地址

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

       

                                   

posted @ 2017-08-09 22:11  Yi_warmth  阅读(162)  评论(0编辑  收藏  举报
CSDN博客地址