常用类与异常处理.ppt

上传人:小飞机 文档编号:6279133 上传时间:2023-10-12 格式:PPT 页数:61 大小:310.50KB
返回 下载 相关 举报
常用类与异常处理.ppt_第1页
第1页 / 共61页
常用类与异常处理.ppt_第2页
第2页 / 共61页
常用类与异常处理.ppt_第3页
第3页 / 共61页
常用类与异常处理.ppt_第4页
第4页 / 共61页
常用类与异常处理.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《常用类与异常处理.ppt》由会员分享,可在线阅读,更多相关《常用类与异常处理.ppt(61页珍藏版)》请在三一办公上搜索。

1、第5章 常用类与异常处理,5.1 Object类,5.3 包装类,5.4 Math类,5.5 Random类,5.7 正则表达式,5.8 异常处理,5.2 字符串类,5.6 日期类,5.9 综合实例,5.1 Object类,5.1.1 equals()方法equals()方法用于判断一个对象是否等于另外一个对象,实际上是比较两个引用是否指向同一个对象。如果两个引用指向同一个对象,equals()方法才返回true。其方法的源代码为:public boolean equals(Object obj)return(this=obj);在实际编程中,更关心被比较的两个引用所指向的对象的状态(或属性)

2、是否相同。许多Java类都重写了这个方法,如String、Data、基本数据类型的包装类。运算符“=”用来比较两个运算对象是否相等,这两个运算对象既可以是基本类型,也可以是引用类型。当两个运算对象都是引用类型时,那么这两个引用变量必须都引用同一个对象才返回true。“=”用于String对象表示比较的是否是同一个串对象,当用于比较两个字符串是否相等时,应使用equals()方法。【例5.1】综合运用“=”和equals()方法。,5.1.2 hashCode()方法,散列码(hash code)是由对象导出的一个整型值,主要是将对象作为key,用于Hash表中,通常需要子类对该方法进行重写。常

3、见的String类及基本数据类型的包装类如Integer、Long类等都已对HashCode()和equals()方法进行了重写,保证:若obj1.equals(obj2),则obj1.hashCode()=obj2.hashCode()。其含义是:若对象obj1和对象obj2按对象的状态(或属性或内容)是相等的,则它们的hashCode值应相同。即对象的hashCode值应由对象的状态决定的。例如,两个不同的String对象只要包含相同的字符序列,其hashCode值就相同。【例5.2】使用HashCode()方法生成对象的散列码。,5.1.3 toString()方法,toString()

4、方法返回对象的字符串表示,默认时,其格式为“类名对象的十六进制哈希码”。其方法的源代码如下:publicStringtoString()returngetClass().getName()+Integer.toHexString(hashCode();当Java系统处理对象时,每当需要将对象转成串时,都会自动调用该方法。当定义自己对象时,应该重写该方法,以返回自己对象有明确含义串的表示。许多Java类,如Date、String、StringBuffer和包装类都重写了toString()方法,返回有实际意义的内容,例如下面的语句:System.out.println(new Object().

5、toString();/显示java.lang.Object10b30a7System.out.println(new Integer(56).toString();/显示56System.out.println(new String(hello).toString();/显示hello以上语句等价于:System.out.println(new Object();/显示java.lang.Object10b30a7System.out.println(new Integer(56);/显示56System.out.println(new String(hello);/显示hello,5.1.

6、3 toString()方法,当()方法的参数是Object类型时,println()方法会自动调用Object对象的toString()方法,然后显示toString()方法返回的字符串。【例5.3】使用toString()方法显示字符串。TestToString.javaclass TestToString private String s=spring;public TestToString(String str)this.s=str+this.s;public static void main(String args)TestToString test=new TestToString

7、(hibernate);System.out.println(test);System.out.println(test.s);public String toString()/重写Object类的toString()方法this.s=struts+this.s;return s;程序运行结果:struts hibernate spring struts hibernate spring,5.2 字符串类,5.2.1 String类一个字符串常量是用双引号括住的一串字符,如Hello。一个字符串常量是一个String对象。类代表只读的不可修改的字符序列,两个字符串对象使用“+”或“+=”运算符

8、,会产生新的字符串对象。若Java程序中有多处出现字符串常量Hello,则Java编译程序只创建一个String对象,所有的字符串常量Hello将使用同一个String对象,例如下面的语句:String s1=Hello;String s2=Hello;String s3=new String(Hello);String s4=new String(Hello);则:s1与s2是同一个对象,而s1、s3与s4是三个不同的对象,尽管它们所表示的字符序列相等。String类的方法众多,有如下常用方法。int length():返回字符串的长度,例如下面的语句:String s1=“hello”;S

9、ystem.out.println(s1.length();/显示结果为5(2)char charAt(int index):返回指定索引处的char值,其中index的取值范围是0字符串长度-1,例如下面的语句:String s1=hello world;System.out.println(s1.charAt(6);/显示结果为w,5.2.1 String类,(3)int compareTo(String another):按Unicode码值的大小逐字符比较两个字符串的大小。如果源串较小,则返回一个小于0的值,如果相等则返回0,否则返回一个大于0的值,例如下面的语句:System.out

10、.println(pareTo(Hello);/显示-4System.out.println(pareTo(hello);/显示0System.out.println(HpareTo(hello);/显示1(4)String concat(String str):把字符串str附加在当前字符串的末尾,例如下面的语句:String str=“hello”;String str2=str.concat(“world”);System.out.println(“str”);/显示 hello System.out.println(“str2”);/显示 hello world(5)equals(Ob

11、ject obj)和equalsIgnoreCase(String str):判断两个字符串对象的内容是否相同。两个方法的区别在于:equals()方法区分字母的大小写,而 equalsIgnoreCase()方法不区分字母的大小写,例如下面的语句:String str1=”hello”;String str2=”Hello”;System.out.println(str1.equals(str2);/显示trueSystem.out.println(str1.equalsIgnoreCase(str2);/显示false,5.2.1 String类,(6)int indexOf(int ch

12、):返回指定字符在此字符串中第一次出现处的索引。int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。例如下面的语句:String s1=hello world;System.out.println(s1.indexOf(l);/显示2System.out.println(s1.indexOf(world);/显示6System.out.println(s1

13、.lastIndexOf(l);/显示9System.out.println(s1.lastIndexOf(world);/显示6(7)String toUpperCase():将此String 中的所有字符都转换为大写。String toLowerCase():将此String中的所有字符都转换为大写。String trim():返回字符串的副本,忽略前导空白和尾部空白。例如下面的语句:String s1=Welcome to Java word;String s2=hello world;System.out.println(s1.toUpperCase();/显示WELCOME TO J

14、AVA WORDSystem.out.println(s1.toLowerCase();/显示welcome to java wordSystem.out.println(s2.trim();/显示hello world,5.2.1 String类,(8)String substring(int beginIndex):返回一个新的字符串,该子字符串从指定索引处的字符开始,直到此字符串末尾。String substring(int beginIndex,int endIndex):返回一个新字符串,该子字符串从指定的beginIndex处开始,直到索引endIndex-1处的字符。例如下面的语

15、句:String s1=Welcome to Java word;System.out.println(s4.substring(11);/显示Java wordSystem.out.println(s1.substring(11,15);/显示Java(9)static String valueOf():把基本数据类型转换为String类型,例如下面的语句:int i=123;String s1=String.valueOf(i);System.out.println(s1);/显示字符串123(10)String split(String regex):将一个字符串按照指定的分隔符分隔,返

16、回分隔后的字符串数组。,5.2.1 String类,【例5.4】统计字符串中的单词个数,单词之间用空格分开。StatisticWords.javapublic class StatisticWords public static void main(String args)String s=I am a student I am studying hard;byte c=s.getBytes();/把字符串转换为字节数组int word=0;/判断是否是单词的标识int num=0;/统计单词的个数int i=c.length;for(int j=0;ji;j+)if(cj=32)/是空格wo

17、rd=0;else if(word=0)word=1;/开始出现单词num+;(单词的总数是:+num);程序运行结果:单词的总数是:8,5.2.1 String类,【例5.5】按指定格式分隔字符串。StringSplit.javapublic class StringSplit public static void print(String s)for(int i=0;i s.length;i+)System.out.print(si+);();public static void main(String args)throws Exception String result;String

18、map=value=hello;result=map.split(=);/result=value,helloprint(result);String time=08:30:36;result=time.split(:);/result=08,30,36print(result);String student=Tom,20,university;result=student.split(,);/result=Tom,20,universityprint(result);程序运行结果:value hello 08 30 36 Tom 20 university,5.2.2 StringBuffe

19、r类,StringBuffer对象表示字符串缓存时,有两个基本概念,一个是容量,另一个是字符串的长度。长度是StringBuffer对象所表示的字符串的长度,容量是StringBuffer对象为存放字符串所拥有的空间大小。如,StringBuffer对象的容量是100,但其存放的字符串长度是10。StringBuffer的构造方法如下:public StringBuffer():构造一个不带字符的字符串缓冲区,其初始容量为 16 个字符。public StringBuffer(int capacity):构造一个不带字符,但具有指定初始容量的字符串缓冲区。public StringBuffer

20、(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为16加上字符串参数的长度。StringBuffer的常用方法如下:StringBuffe append():向缓冲区内添加新的字符串。StringBuffe insert(int offset,String str):在字符串的offset位置插入字符串str。StringBuffer delete(int start,int end):移除此序列的子字符串中的字符,该子字符串从指定的start 处开始,一直到索引end-1处的字符。StringBuffer reverse():将字符序列逆

21、序。,5.2.2 StringBuffer类,String类与StringBuffer类的区别如下:(1)String类代表字符串,Java 程序中的所有字符串字面值(如abc)都作为此类的实例实现,字符串是常量,它们的值在创建之后不能更改,因此,String类的对象都是线程安全的。StringBuffer代表线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该字符序列的长度和内容。如append()、insert()、delete()、replace()方法等。(2)String类重写了从Object类所继承的equals()方法,而StringBuf

22、fer类没有重写该方法,例如下面的语句:String s1=new String(hello);String s2=new String(hello);System.out.println(s1.equals(s2);/显示trueStringBuffer sb3=new StringBuffer(hello);StringBuffer sb4=new StringBuffer(hello);System.out.println(sb3.equals(sb4);/显示false(3)String对象之间可以用操作符“+”进行连接,而StringBuffer对象之间不能通过操作符进行连接,但可使

23、用append()方法。例如下面的语句:String s1=spring;String s2=hibernate;System.out.println(s1+s2);/显示springhibernateStringBuffer sb3=new StringBuffer(spring);System.out.println(sb3.append(hibernate);/显示springhibernate,5.2.2 StringBuffer类,(4)StringBuffer或StringBuilder是不能比较大小的,而String是可以比较大小的。因此可以方便地将StringBuffer转成S

24、tring再比较大小。(5)若一个字符串有频繁的插入、删除、修改等操作,则适宜使用StringBuffer(线程安全)或StringBuilder(与StringBuffer相同,只是用于单线程下,性能更好),否则可使用String类进行大小比较、字符串结构分析等。若对一个String对象进行频繁的插入、删除、修改等操作,会产生大量的临时String对象,内存空间消耗较大。因此应按操作需求随时在StringBuffer与String之间互相转换。(6)String类“+”运算符实际上是由StringBuilder的append()方法来实现的。,5.2.2 StringBuffer类,(7)在

25、程序设计时,经常需要String与其他类型之间进行类型转换,转换方法如表5.1所示。,表5.1 String与其他类型之间的类型转换,5.2.2 StringBuffer类,【例5.6】测试StringBuffer类的常用方法append()、insert()、delete()。TestStringBuffer.javapublic class TestStringBuffer public static void main(String args)String s=123;char a=a,b,c;StringBuffer sb1=new StringBuffer(s);sb1.append

26、(struts).append(hiberante).append(spring);/追加字符序列System.out.println(sb1);StringBuffer sb2=new StringBuffer(中国);for(int i=0;i 10;i+)sb2.append(i);System.out.println(sb2);sb2.delete(5,sb2.length();/移除字符序列System.out.println(sb2);sb2.insert(3,a);/插入字符序列System.out.println(sb2);System.out.println(sb2.reve

27、rse();/逆序,5.2.2 StringBuffer类,程序运行结果:123strutshiberantespring中国0123456789中国012中国0abc1221cba0国中,5.3 包装类,Java 既提供了基本数据类型,也提供了相应的包装类。使用基本数据类型,能够满足大多数应用需求,但基本数据类型不具有对象的特性,不能满足特殊需求。Java中的很多类的不少方法的参数类型是Object类型,即,这些方法接受的参数都是对象,而又需要用这些方法处理基本数据类型的数据,这时包装类就很有用了。表5.2列出每一个基本数据类型对应的包装类。,表5.2 基本数据类型与包装类,5.3 包装类,

28、包装类具有以下特点:(1)所有的包装类都是final类型,因此不能创建它们的子类。(2)包装类是不可变类,一个包装类的对象创建后,它所包含的基本数据类型就不能被改变。因此,所有包装类的对象都是线程安全的。(3)从JDK5.0版本开始,提供了自动装箱和自动拆箱机制。例如下面的语句:Integer oi=3;/自动装箱,等价于Integer oi=Integer.valueOf(3);int i oi/自动拆箱,等价于int i=oi.intValue();int v=oi+1;/混合运算,等价于int v=Integer.valueOf(oi.intValue()+1);(4)将字符串转换为基本

29、值的parseType方法,例如,Integer.parseInt(args0)可获得命令行上提供的int型数据。(5)可生成该对象基本值的typeValue方法(a.intValue()。,5.3 包装类,Character类和Boolean类直接继承Object类,除此以外,其他包装类都是的直接子类,因此都继承或者重写了Number类的方法,如图5.1所示。,图5.1 包装类的类层次结构,5.3 包装类,(6)所有的包装类都可以用和它对应的基本数据类型作为参数,来构造它们的实例,例如下面的语句:Boolean b=new Boolean(true);/或:Boolean b=true;By

30、te bt=new Byte(byte)10);/或:Byte b=10;Character c=new Character(b);/或:Character c=b;Integer i=new Integer(1);/或:Integer i 1;Float f=new Float(3.14f);/或:Float f=3.14 f;(7)包装类都重写了Object类的toString()方法,以字符串的形式返回包装类对象所表示的基本数据类型。(8)除Character类和Boolean类以外,包装类都有valueOf(String str)静态工厂方法,可以根据String类型的参数来创建包装类

31、对象。参数字符串str不能为null,而且该字符串必须可以解析为相应的基本数据类型,例如下面的语句:Double d=Double.valueOf(3.14);/合法Integer i=Integer.valueOf(10);/合法Integer i2=Integer.valueOf(Tom);/抛出NumberFormatException(9)除Character类以外,包装类都有parseType(String str)静态方法,把字符串转换为相应的基本数据类型数据,且该字符串必须是可以解析为相应的基本数据类型的数据,例如下面的语句:int i=Integer.parseInt(10);

32、/合法int a=Integer.parseInt(true);/抛出NumberFormatException,5.3 包装类,【例5.7】测试包装类的属性和方法。TestWrap.javapublic class TestWrap public static void main(String args)Integer i=new Integer(5);Double d=new Double(5.68);int j=i.intValue()+d.intValue();float f=i.floatValue()+d.floatValue();System.out.println(j);Sys

33、tem.out.println(f);double pi=Double.parseDouble(3.14);double r=Double.valueOf(5.0).doubleValue();double s=pi*r*r;System.out.println(s);程序运行结果:1010.6878.5,5.4 Math类,类提供了许多用于数学运算的静态方法,包括指数运算、对数运算、平方根运算和三角运算等。Math类还有两个静态常量:E(自然对数)和PI(圆周率)。Math类是final类型的,因此不能派生子类。另外,Math类的构造方法是private类型的,因此Math类不能够被实例化。

34、Math类的方法较多,现列出部分方法,如表5.3所示。,表5.3 Math类的方法,5.4 Math类,【例5.8】输入三角形的三边长,求此三角形面积。TestMath.javapublic class TestMath public static void main(String args)int a=0;int b=0;int c=0;a=Integer.parseInt(args0);b=Integer.parseInt(args1);c=Integer.parseInt(args2);double area=0;double s=0.0;s=1.0/2*(a+b+c);area=Mat

35、h.sqrt(s*(s-a)*(s-b)*(s-c);(三角形的面积是+area);,5.4 Math类,右击“TestMath.java”,选择“Run As”“Run Configurations”,如图5.2所示,选择Main标签页,在“Project”栏中选择“MyProject_05”,在“Main class”栏中选择“TestMath”,选择“Arguments”标签页,在“Program argumentds”栏中输入“6 8 10”,然后单击“Run”按钮,运行程序。,图5.2 计算三角形面积,5.5 Random类,类提供了一系列用于生成伪随机数的方法,表5.4列出一些常用

36、的方法。Random类分带种子和不带种子的Random。两者的区别是:带种子的,每次运行生成的结果都是一样的。不带种子的,则每次运行生成的结果都是随机的。,表5.4 Random类的常用方法,5.5 Random类,【例5.9】使用Random类生成随机数。TestRandom.javaimport;public class TestRandom public static void main(String args)Random r1=new Random();Random r2=new Random(100);Random r3=new Random(100);System.out.pri

37、ntln(r1.nextInt();/产生任意大小的随机整数System.out.println(r1.nextBoolean();System.out.println(r1.nextDouble();System.out.println(r1.nextFloat();System.out.println(r1.nextLong();System.out.println(r1.nextInt(100);/产生0至100的随机整数System.out.println(r2.nextInt();System.out.println(r3.nextInt();,5.5 Random类,程序运行结果:

38、-821484769true0.2193341379-1193959466-1193959466,5.6 日期类,5.6.1 Date类Date类用以毫秒数表示特定的日期和时间。在Java中有两个Date类,一个是,另一个是类,是 的父类。有一个valueOf()方法用于将 JDBC日期转义形式的字符串转换成Date值。类的valueOf()方法:public static Date valueOf(String s)其中s是以“yyyy-mm-dd”形式表示日期的 String对象。,5.6.1 Date类,【例5.10】使用Java的两种日期类类和类。UseDate.javaimport;

39、import java.sql.*;import;public class UseDatepublic static void main(String args)Date date=new Date();System.out.println(date);date1=new java.sql.Date(0);date2=date1.valueOf(2009-03-04);/返回一个日期类型System.out.println(date2);DateFormat fullDateFormat=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFo

40、rmat.FULL);/完整的日期格式System.out.println(fullDateFormat.format(date);程序运行结果:Wed Mar 04 13:45:26 CST 20092009-03-042009年3月4日 星期三 下午01时45分26秒 CST,5.6.2 DataFormat类,类是抽象类,其实现类用于定义日期的格式,该类主要用于将字符串解析成日期,及将日期格式化成字符串。字符串“yyyy-MM-dd-EEEE-hh-mm-ss”决定了日期的格式。“yyyy”表示4位长度的年份,“MM”表示月份,“dd”表示日期,“EEEE”表示星期,“hh”、“mm”、

41、“ss”分别表示时、分、秒。DateFormat类的parse()方法按照特定的格式把字符串解析为日期对象,before()、after()、compareTo()用于比较日期的大小。【例5.11】使用DateFormat类格式化当前日期。既然已经可以生成和解析定制的日期格式,那么如何使用内建的格式化过程?方法DateFormat.getDateTimeInstance()可以用几种不同的方法获得标准的日期格式化过程。public static final DateFormat getDateTimeInstance(int dateStyle,int timeStyle)描述:第一个参数是日

42、期风格,第二个参数是时间风格,它们都是基本数据类型int(整型)。考虑到可读性,使用了DateFormat 类提供的常量:SHORT、MEDIUM、LONG、和FULL。,5.6.2 DataFormat类,【例5.12】获取四个内建的日期对象,分别是短的、中等的、长的和完整的日期格式。BuiltDateParse.javaimport;import;public class BuiltDateParse public static void main(String args)Date date=new Date();DateFormat shortDateFormat=DateFormat.

43、getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);/短的日期格式DateFormat mediumDateFormat=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);/中等的日期格式DateFormat longDateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);/长的日期格式DateFormat fullDateFormat=DateFormat.

44、getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);/完整的日期格式System.out.println(shortDateFormat.format(date);System.out.println(mediumDateFormat.format(date);System.out.println(longDateFormat.format(date);System.out.println(fullDateFormat.format(date);,5.6.2 DataFormat类,程序运行结果:08-12-5 上午10:242008-12

45、-5 10:24:402008年12月5日 上午10时24分40秒2008年12月5日 星期五 上午10时24分40秒 CST,5.6.3 Calendar类,现在已经能够格式化并创建一个日期对象了,但是如何才能设置和获取日期数据的特定部分呢,比如日期、小时、或者分钟,又如何在日期的这些部分加上或者减去值呢?使用Calendar 类可以满足这些要求。类是抽象类,其实现类是。Calendar类的set()和get()方法可用来设置和读取日期的特定部分,比如年、月、日等;add()方法可用来在日期的特定部分加上一些数值。【例5.13】打印10个既是星期一又是11号的日期。,5.7 正则表达式,正则

46、表达式用来描述特定的字符串模式,例如正则表达式a3表示有三个字符“a”构成的字符串,相当于普通字符串“aaa”,正则表达式“d”表示一位数字。在正则表达式中,有些字符具有特殊含义,参见表5.5。,表5.5 正则表达式中特殊字符,5.7 正则表达式,下面对表5.5所列举的每一个特殊字符列举一个示例,如下所示:System.out.println(b.matches(abc);/打印trueSystem.out.println(b.matches(abc);/打印falseSystem.out.println(A.matches(a-zA-Z);/打印trueSystem.out.println(

47、A.matches(a-z|A-Z);/打印trueSystem.out.println(A.matches(a-zA-Z);/打印trueSystem.out.println(R.matches(A-Z/打印true,5.7 正则表达式,表5.6同时列出了一些在正则表达式中量词所表示字符的出现次数。表5.6 量词,5.7 正则表达式,下面的位置匹配,用于匹配串中的位置。(1)(?=X):与这样的位置相匹配,其右部能匹配X。(2)(?!X):与这样的位置相匹配,其右部不能匹配X。(3)(?=X):与这样的位置相匹配,其左部能匹配X。(4)(?!X):与这样的位置相匹配,其左部不能匹配X。运用以

48、上正则式规则,可设计常用的正则表达式。如:(1)数字串:d+,在Java中表示为“d+“。(2)英文单词:a-z A-Z+,在Java中表示为“a-z A-Z+”。(3)一个汉字:u4e00-u9fa5在Java中表示为“u4e00-u9fa5”。(4)汉字串:u4e00-u9fa5+在Java中表示为“u4e00-u9fa5+”。(5)IP地址:(d1,3.)3d1,3在Java中表示为“(d1,3.)3d1,3”。(6)重复字符压缩:将字符串中连续重复的字符压缩成一个。例如,“aaabbbcccddd11122+*33”压缩成“abcd12+*.3”。相关代码是:设String s=”;则

49、:String rs=s.replaceAll(“(.)(1)*”,”$1”);说明:(.)表示一号组,匹配任何一个字符,1表示与一号组相同的字符,$1表示在replaceAll()方法中,与一号组相匹配的那个子串。,5.7 正则表达式,(7)特定子串提取:例如,String s=”%.%CXLL=add1,31,123.12%CXLL=add2,32,124%CXLL=,33,125.12%LL=-121.11”;从中提取出:CXLL=add1,31,123,123.12,CXLL=add2,32,124.12,CXLL=,33,125.12。提取的正则表达式设计成:CXLL=.*?(?=%

50、)。Java中表示为“CXLL=.*?(?=%)”。说明:.*?表示以最小匹配方式去匹配任何串(若没有?表示最大匹配,则内部将包含有)。(?=%)表示必须与这样的位置相匹配,其右部有一个字符。(8)串格式:不能以bug打头可以由字母、数字组成的812个数的字符串。正则式:(?!bug)a-zA-Z0-98-12下面对表5.6所列举的每一个特殊字符列举一个示例,如下所示:System.out.println(aaaa.matches(a*);/打印trueSystem.out.println(aaaa.matches(a+);/打印trueSystem.out.println(.matches(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号