《java2实用教程字符串》由会员分享,可在线阅读,更多相关《java2实用教程字符串(24页珍藏版)》请在金锄头文库上搜索。
1、第章 字符串,5.1 字符串 character strings 5.2 字符串的常用方法 common methods 5.3 字符串与基本数据的相互转化 5.4 对象的字符串表示 5.5 StringTokenizer类 5.6字符串与字符、字节数组 5.7 StringBuffer类 5.8 正则表达式 Regular Expressions,5.1 字符串,java.lang.String类,字符串变量是对象。 1.字符串常量 “你好”,“1234.987”,“weqweo”。 2.创建字符串 使用String类的构造方法,例如: String s=new String(“we are
2、 students“);,5.2 字符串的常用方法,(1)public int length() length()方法可以获取一个字符串的长度 ,如: String tom= “我们是学生“; tom.length()的值5。,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 stud
3、ents“); tom.equals(boy)的值是false,tom.equals(jerry)的值是 true。,public boolean startsWith(String s) public boolean endsWith(String s),字符串对象调用startsWith(String s)方法,判断当前字符串对象的前缀是否是参数指定的字符串s . 字符串对象调用endsWith(String s) 方法,判断当前字符串的后缀是否是字符串s .,public boolean regionMatches (int firstStart, String other, int o
4、rtherStart,int length),从当前字符串参数firstStart指定的位置处开始,取长度为length的一个子串,将这个子串和参数other指定的一个子串进行比较。 其中,other指定的子串是从参数othertStart指定的位置开始,长度为length的一个子串。,public int compareTo(String s),字符串对象按字典序与参数s指定的字符串比较大小。 如果当前字符串与s相同,该方法返回值0; 如果当前字符串大于s,该方法返回正值; 如果小于s,该方法返回负值。,public int indexOf (String s),indexOf (Strin
5、g s)从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。 indexOf(String s ,int startpoint)方法从当前字符串的startpoint位置处开始检索字符串s,并返回首次出现s的位置。 lastIndexOf (String s)方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。,public String substring(int startpoint),字符串对象调用该方法获得一个当前字符串的子串 该子串是从当前字符串的startpoint处截取到字符串的末尾所得到的字符串。 字符串对象调用su
6、bstring(int start ,int end)方法获得一个当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end处所对应的字符。,public String replaceAll(String oldString ,String newString),字符串对象s调用该方法可以获得一个串对象,这个串对象是通过用参数newString指定的字符串替换s中由oldString指定的所有字符串而得到的字符串。,public String trim(),一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。,5
7、.3 字符串与基本数据的相互转化,使用java.lang包中的Byte、Short、Integer 、 Long、Float、Double类调相应的类方法: public static byte parseByte(String s) throws NumberFormatException public static short parseShort(String s) throws NumberFormatException public static short parseInt(String s) throws NumberFormatException public static l
8、ong parseLong(String s) throws NumberFormatException public static float parseFloat(String s) throws NumberFormatException public static double parseDouble(String s) throws NumberFormatException 可以将“数字”格式的字符串,转化为相应的基本数据类型。,5.4 对象的字符串表示,在子类的讲述中我们讲过,所有的类都默认是java.lang包中Object类的子类或间接子类。Object类有一个public
9、方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。,5.5 StringTokenizer类,当我们分析一个字符串并将字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法: StringTokenizer(String s) 为字符串s构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符。 StringTokenizer(String s, String delim) 为字符串s构造一个分析器。参数dilim中的字符被作为分隔符。,把一个St
10、ringTokenizer对象称作一个字符串分析器。 一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词) 每当调用nextToken()时,都将在字符串中获得下一个语言符号,每当获取到一个语言符号,字符串分析器中的负责计数的变量的值就自动减一,该计数变量的初始值等于字符串中的单词数目,5.6 字符串与字符、字节数组,public void getChars(int start,int end,char c,int offset ) 字符串调用getChars方法将当前字符串中的一部分字符拷贝到参数c指定的数组中。将字符串中从位置start到end-1位置上的字符拷贝
11、的数组c中,并从数组c的offset处开始存放这些字符。需要注意的是,必须保证数组c能容纳下要被拷贝的字符。 public char toCharArray() 字符串对象调用该方法可以初始化一个字符数组,该数组的长度与字符串的长度相等,并将字符串对象的全部字符拷贝到该数组中。,String(byte,int offset,int length) 该构造方法使用平台默认的字符编码,用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。 public byte getBytes() 使用平台默认的字符编码,将当前字符串转化为一个字节数组。,“hello
12、”与new String(“hello”)的区别 以下两种方式都定义了两个内容为“hello”的字符串。 方式一:String s1= “hello“,s2=“hello“; 方式二:String s1=new String(“hello“),s2=new String(“hello“); 在第一种方式中,“hello”为直接数,Java虚拟机把它作为编译时常量,在内存中只会为它分配一次内存,然后就可以重复使用,因此s1=s2的比较结果为true。 在第二种方式中,每个new语句都会新建一个String对象,因此s1=s2的比较结果为false。,public class ThreeStrs
13、public String s1; public String s2; public String s3 = “hello“; void init1() s1 = “hello“; void init2() s2 = “hello“; public static void main(String args) ThreeStrs t = new ThreeStrs(); t.init1(); t.init2(); System.out.println(t.s1 = t.s2); / 打印true System.out.println(t.s1 = t.s3); / 打印true ThreeStr
14、s tt = new ThreeStrs(); tt.init1(); tt.init2(); System.out.println(t.s1 = tt.s1); / 打印true ,5.7 StringBuffer类,String类创建的字符串对象是不可修改的 String字符串不能修改、删除或替换字符串中的某个字符,即String对象一旦创建,那么实体是不可以再发生变化的. StringBuffer类能创建可修改的字符串序列,也就是说,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。,5.8正则表达式regular expressions,一个正则表达式是含有一些
15、具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符metacharacter 。 比如,“dhello”中的d就是有特殊意义的元字符,代表0到9中的任何一个。 字符串“9hello”和“1hello”都是和正则表达式:“dhello”匹配的字符串之一。 字符串对象调用 public boolean matches(String regex) 方法可以判断当前字符串对象是否和参数regex指的正则表达式匹配。,元字符 Metacharacters,See Java Documentation,Some Patterns,An+a Ana, Annna Aa, ANna A2,7AA,
16、 AAA, , AAAAAAA AAAAAAAA dddd d4 A|B (w+)_(w+)(w+).org (d-)?(d3-)?d3-d4,public class Example4_9 public static void main(String args) / 把字符串中的“aaa”全部替换为“z” / 打印zbzcz System.out.println(“aaabaaacaaa“.replaceAll(“a3“, “z“); / 把字符串中的“aaa”、“aa”或者“a”全部替换为“*” / 打印*b*c* System.out.println(“aaabaaca“.replaceAll(“a1,3“, “*“); / 把字符串中的数字全部替换为“z” / 打印zzzazzbzzcc