JAVA2实用教程(第5版)第八章

8.1 String类

 

可以使用String类声明对象并创建对象,例如:

 

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

 

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

 

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

 

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

 

      char a[] = {'J','a','v','a'};

 

     String s = new String(a);

 

 过程相当于

 

      String s = new String("Java");

 

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

 

 char a[] = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};

 

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

 

 相当于 String s = new String("贰叁肆伍");

 

(3)引用String常量

 

 

 

(4)String对象可以用“+”进行并置运算,即首尾相接得到一个新的String对象。

 

(5)String 类的常用方法

 

1)public int length():获取一个字符串的长度

 

2)public boolean equals(String s):判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同                

 

3)public boolean startsWith(String s)判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列。

 

4) public int compareTo(String s):按字典序与参数s指定的字符序列比较大小。

 

5)public boolean contains(String s):String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列,例如,tom="student",那么tom.contains("stu")的值就是true,而tom.contains("ok")的值是false。

 

6)public int indexOf (String str):String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1,其相关方法:

 

   indexOf(String s ,int startpoint)

 

   lastIndexOf (String s)

 

    例如 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

 

7)public String substring(int startpoint):字符串对象调用该方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start ,int end)方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的start位置至end–1位置上的字符所得到的字符序列。

 

8)public String trim() :得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列。

 

如果当前String对象的字符序列与s的相同,该方法返回值0,如果大于s的字符序列,该方法返回正值;如果小于s的字符序列,该方法返回负值。

 

(6)字符串与基本数据的相互转化

 

Java.lang包中的Integer类调用其类方法:

 

      public static int parseInt(String s)

 

可以使用String 类的类方法

 

       public static String valueOf(byte n)

 

       public static String valueOf(int n)

 

       public static String valueOf(long n) 

 

       public static String valueOf(float n)

 

String str = String.valueOf(12313.9876);  

 

(7)对象的字符串表示

 

在子类中我们讲过,所有的类都默认是java.lang包中Object类的子类或间接子类。Object类有一个

 

                 public String toString()

 

方法,一个对象通过调用该方法可以获得该对象的字符序列表示。一个对象调用toString()方法返回的String对象的字符序列的一般形式为:

 

           创建对象的类的名字@对象的引用的字符串表示

 

(8)字符串与字符、字节数组

 

1)字符串与字符数组

 

String 类的构造方法:

 

–String(char[]);

 

–String(char[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象

 

将String对象的部分字符序列存放到数组中的方法:

 

           – public void getChars(int start,int end,char c[],int offset )

 

将String对象的字符序列存放到数组中的方法

 

             public char[] toCharArray()

 

2)字符串与字节数组

 

 String(byte[])用指定的字节数组构造一个字符串对象。

 

–String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

 

–public byte[] getBytes()使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

 

–public byte[] getBytes(String charsetName)使用参数指定字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。     

 

(9)字符串的加密算法

 

char [] p = password.toCharArray();     

 

 (10)正则表达式

 

正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义字符,这些特殊字符称做正则表达式中的元字符。比如,"\\dcat"中的\\d就是有特殊意义的元字符,代表0到9中的任何一个,"0cat","1cat","2cat",…,"9cat"都是和正则表达式"\\dcat"匹配的字符序列。

 

String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配。   

 

在正则表达式中可以用方括号括起若干个字符来表示一个元字符,该元字符代表方括号中的任何一个字符。例如String regex = "[159]ABC",那么"1ABC"、"5ABC"和"9ABC"都是和正则表达式regex匹配的字符序列。例如,[abc]:代表a、b、c中的任何一个;[^abc]:代表除了a、b、c以外的任何字符;[a-zA-Z]:代表英文字母(包括大写和小写)中的任何一个。

 

#字符串的替换

 

   public String replaceAll(String regex,String replacement)

 

String对象调用public String replaceAll(String regex,String replacement)方法返回一个新的String对象,这个新的String对象的字符序列是把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列,例如:

 

String str ="12hello567bird".replaceAll("[a-zA-Z]+","你好");

 

那么str的字符序列就是将"12hello567bird"中所有英文字符序列替换为"你好"后得到的字符序列,即str的字符序列是"12你好567你好"。

 

#字符串的分解

 

   public String[] split(String regex)使用参数指定的正则表达式regex做为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。

 

      例如,对于字符串str  

 

   String str = "1949年10月1日是中华人民共和国成立的日子";

 

   如果准备分解出全部由数字字符组成的单词,就必须用非数字字符串做为分隔标记,因此,可以使用正则表达式:String regex="\\D+";

 

    做为分隔标记分解出str中的单词:String digitWord[]=str.split(regex);

 

     那么,digitWord[0]、digitWord[1]和digitWord[2]就分别是“1949”、“10”和“1”。

 

8.3 Scanner类

 

(1)Scanner对象可以解析字符序列中的单词,例如,对于String对象NBA

 

String NBA = "I Love This Game";

 

为了解析出NBA的字符序列中的单词,可以如下构造一个Scanner对象。

 

Scanner scanner = new Scanner(NBA);

 

Scanner对象可以调用方法

 

useDelimiter(正则表达式);

 

将正则表达式作为分隔标记,即让Scanner对象在解析操作时,把与正则表达式匹配的字符序列作为分隔标记。如果不指定分隔标记,那么Scanner对象默认地用空白字符:空格,制表符,回行符作为分隔标记来解析String对象的字符序列中的单词。

 

(2)Scanner对象可以解析字符序列中的单词,例如,对于String对象NBA

 

String NBA = "I Love This Game";

 

为了解析出NBA的字符序列中的单词,可以如下构造一个Scanner对象。

 

Scanner scanner = new Scanner(NBA);

 

Scanner对象可以调用方法

 

useDelimiter(正则表达式);

 

将正则表达式作为分隔标记,即让Scanner对象在解析操作时,把与正则表达式匹配的字符序列作为分隔标记。如果不指定分隔标记,那么Scanner对象默认地用空白字符:空格,制表符,回行符作为分隔标记来解析String对象的字符序列中的单词。

 

(3)使用正则表达式作为分隔标记解析字符串

 

Scanner对象可以调用 useDelimiter(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。

 

使用正则表达式:

 

String regex= "[^0123456789.]+" //(匹配所有非数字字符序列)

 

作为分隔标记,解析"市话76.8元,长途:167.38元,短信12.68元",以及"牛奶:8.5圆,香蕉3.6圆,酱油:2.8圆"中的价格,并计算价格之和。

 

8.4 StringBuffer类

 

StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。

 

(1)常用类

 

1) StringBuffer append(String s):将String对象s的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

 

   StringBuffer append(int n):将int型数据n转化为String对象,再把该String对象的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

 

   StringBuffer append(Object o):将一个Object对象o的字符序列表示追加到当前String- Buffer对象的字符序列中,并返回当前StringBuffer对象的引用

 

类似的方法还有:

 

   StringBuffer append(long n),StringBuffer append(boolean n),

 

   StringBuffer append(float n),StringBuffer append(double n),

 

   StringBuffer append(char n)

 

2)public chat charAt(int n ):得到参数n指定的置上的单个字符

 

   public void setCharAt(int n ,char ch):将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换。

 

3)StringBuffer insert(int index, String str) :将参数str指定的字符串插入到参数index指定的位置

 

4)public StringBuffer reverse() :将该对象实体中的字符翻转

 

5)StringBuffer delete(int startIndex, int endIndex):从当前StringBuffer对象实体中的字符串中删除一个子字符串

 

   其相关方法:deleteCharAt(int index) 删除当前StringBuffer对象实体的字符串中index位置处的一个字符。

 

6)StringBuffer replace(int startIndex,int endIndex,String str):将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值