版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块五Java常用API目录/Contents01字符串类02日期时间类03Math类与Random类04正则表达式字符串类任务一字符串类字符串是编写程序时使用最为频繁的数据类型之一,为了更好的封装和处理字符串数据,Java提供了三种主要的字符串类,分别是String、StringBuffer和StringBuilder,它们位于java.lang包中,可以直接使用而不需要导包。下面对String类、StringBuffer类和StringBuilder类分别进行讲解。学习目标掌握String类的初始化,能够创建并初始化String对象
先定一个小目标!掌握StringBuffer类和StringBuilder类的使用,能够熟练使用StringBuffer类和StringBuilder类对字符串进行操作,并简述两者的区别熟悉String类的常用方法,能够使用String类的常用方法对字符串进行查找、替换、分割、截取等操作String类的初始化String类Java提供用于表示字符串的类之一,使用该类可以创建和操作字符串对象。使用String类进行字符串操作之前,首先需要初始化String对象,初始化的方式有使用字符串常量和使用构造方法两种方式。String类的初始化(1)使用字符串常量使用字符串常量初始化一个String类对象的语法格式如下。String变量名=字符串;String为引用数据类型,字符串可以为一个具体的字符串,也可以设置为null。示例代码如下。Stringstr1=null;//将字符串str1设置为nullStringstr2="";//将字符串str2设置为空字符串Stringstr3="hello";//将字符串str3设置为helloString类的初始化(1)使用字符串常量String类代表一个不可变的字符序列。这意味着只要一个String对象被创建,它的值就不能被修改。示例代码及图解变化如下。Strings="hello";s="helloworld";String类的初始化(2)使用构造方法String类提供了多个构造方法来初始化字符串对象,其中的常见构造方法如下表所示。方法声明功能描述String()创建一个内容为空的字符串String(Stringvalue)根据指定的字符串value创建对象String(char[]value)根据指定的字符数组value创建对象String(byte[]bytes)根据指定的字节数组bytes创建对象String类的初始化案例演示下面通过一个案例演示使用构造方法创建String类的对象。Example02.java源代码String类的初始化案例演示案例的运行结果如下图所示。String类的初始化小提示:字符串连接运算符Java中的运算符“+”可以用来连接字符串。例如文件Example02.java中,"s1="+s1的作用就是将s1=和字符串s1的值拼接成一个新的字符串。在Java程序中,如果符号“+”的两边操作数中有一个为String类型,那么“+”就表示字符串连接运算符。String类的常用方法为了方便操作和处理字符串,String类提供了一系列常用的方法,包括查找、替换、比较和截取等操作。方法声明功能描述intlength()返回当前字符串的长度,即字符串中字符的个数intindexOf(intch)返回指定字符ch在字符串中第一次出现的位置(索引)intlastIndexOf(intch)返回指定字符ch在字符串中最后一次出现的位置intindexOf(Stringstr)返回指定子字符串str在字符串第一次出现的位置intlastIndexOf(Stringstr)返回指定子字符串str在此字符串中最后一次出现的位置charcharAt(intindex)返回字符串中index位置上的字符,其中index的取值范围是0~(字符串长度-1)booleanstartsWith(Stringprefix)判断此字符串是否以指定的字符串prefix开始booleanendsWith(Stringsuffix)判断此字符串是否以指定的字符串suffix结尾String类的常用方法方法声明功能描述booleanisEmpty()判断字符串长度是否为0,如果为0则返回true,反之则返回falsebooleanequals(Objectobj)比较obj与当前字符串对象的内容是否相同booleanequalsIgnoreCase(Stringstr)以忽略大小写的方式比较str与当前字符串对象的内容是否相同intcompareTo(Stringstr)按对应字符的Unicode比较str与当前字符串的大小。若当前字符串比str大,返回正整数;若当前字符串比str小,返回负整数;若相等则返回0intcompareToIgnoreCase(Stringstr)按对应字符的Unicode以忽略大小写的方式比较str与当前字符串的大小。若当前字符串比str大,返回正整数;若当前字符串比str小,返回负整数;若相等则返回0booleancontains(CharSequencecs)判断此字符串中是否包含指定的字符序列cs。StringtoLowerCase()使用默认语言环境的规则将String中的所有字符都转换为小写StringtoUpperCase()使用默认语言环境的规则将String中的所有字符都转换为大写接上页表格。String类的常用方法方法声明功能描述staticStringvalueOf(int
i)将int变量i转换成字符串char[]toCharArray()将此字符串转换为一个字符数组Stringreplace(CharSequenceoldstr,CharSequencenewstr)使用newstr替换字符串中的oldstr,返回一个新的字符串Stringtrim()去除了原字符串首尾的空格Stringconcat(Stringstr)将指定的字符串str连接到当前字符串的末尾String[]split(Stringregex)根据参数regex将当前字符串分割为若干个子字符串Stringsubstring(intbeginIndex)返回一个新字符串,它包含从指定的beginIndex处开始,直到此字符串末尾的所有字符Stringsubstring(intbeginIndex,intendIndex)返回一个新字符串,它包含从指定的beginIndex处开始,直到索引endIndex-1处的所有字符接上页表格。String类的常用方法1.字符串的获取操作在Java程序中,有时需要获取字符串的一些信息,比如获取字符串的长度、获取指定索引位置的字符等。String类的常用方法1.字符串的获取操作通过一个案例学习使用String类的方法获取字符串长度、以及访问字符串中的字符。Example03.java源代码String类的常用方法1.字符串的获取操作案例的运行结果如下图所示。String类的常用方法2.字符串的判断操作在实际开发中,常常需要对字符串进行各种判断操作。例如,在用户注册时,程序可能需要验证填写的用户信息是否符合特定的格式要求,例如,字符串是否为空、是否以指定字符串开始或结束、是否包含指定的字符串等。String类的常用方法2.字符串的判断操作通过一个案例演示如何调用String类提供的方法进行字符串的判断操作。Example04.java源代码String类的常用方法2.字符串的判断操作案例的运行结果如下图所示。String类的常用方法3.字符串的转换操作在程序开发中,经常需要对字符串进行各种转换操作。例如,在数据处理时,为了方便拆分字符串,可以将字符串转换成数组形式,或者为了符合特定格式需求,需要将字符串中的字符进行大小写转换等。String类的常用方法3.字符串的转换操作下面通过一个案例演示字符串的转换操作。Example05.java源代码String类的常用方法3.字符串的转换操作案例的运行结果如下图所示。String类的常用方法4.字符串的替换和去除空格操作在程序开发中,经常会遇到需要对字符串进行替换和去除空格的操作。例如,开发一个文本编辑器时,提供查找和替换功能可以快速的修改或替换特定的文本。String类的常用方法4.字符串的替换和去除空格操作下面通过一个案例演示字符串的替换和去除空格的操作。Example06.java源代码String类的常用方法4.字符串的替换和去除空格操作案例的运行结果如下图所示。String类的常用方法5.字符串的拼接、截取和分割操作在程序开发中,对字符串的拼接、截取和分割也是很常见的操作。例如,购物网站将用户ID和当前时间拼接起来生成订单号,或者在一段文本信息中,截取需要的部分,再根据指定分隔符将其分割为若干段。String类的常用方法5.字符串的拼接、截取和分割操作下面通过一个案例演示字符串的拼接、分割和截取操作。Example07.java源代码String类的常用方法5.字符串的拼接、截取和分割操作案例的运行结果如下图所示。StringBuffer类和StringBuilder类由于String类的字符串对象被创建后,其内容是不可变的。如果需要频繁地操作字符串,会导致不断地创建新的String类对象,从而占用大量内存,也会降低CPU的效率。为此,Java提供了StringBuffer类,StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类和StringBuilder类StringBuffer类提供了一系列高效地处理字符串的方法,常用方法如下表所示。方法声明功能描述StringBuffer()创建初始容量为16,不含任何内容的字符串缓冲区StringBuffer(intcapacity)创建初始容量为capacity,不含任何内容的字符串缓冲区StringBuffer(Strings)创建初始容量为参数s的长度+16,内容为s的字符串缓冲区intcapacity()获取字符串缓冲区的当前容量StringBufferappend(charc)添加参数到StringBuffer对象中StringBufferinsert(intoffset,Stringstr)在字符串的offset位置插入字符串strvoidsetCharAt(intindex,charch)修改指定位置index处的字符序列StringBuffer类和StringBuilder类接上页表格。方法声明功能描述StringBufferreplace(intstart,intend,Strings)在StringBuffer对象中替换指定的字符或字符串序列StringBufferdeleteCharAt(intindex)移除此序列指定位置的字符StringBufferdelete(intstart,intend)删除StringBuffer对象中指定范围的字符或字符串序列StringtoString()返回StringBuffer缓冲区中的字符串StringBufferreverse()反转字符串StringBuffer类和StringBuilder类案例演示下面通过一个案例演示StringBuffer类常用方法的使用。Example08.java源代码StringBuffer类和StringBuilder类案例演示案例的运行效果如下图所示。StringBuffer类和StringBuilder类
需要注意的是,在使用StringBuffer类的replace()方法时,传入的位置范围是从开始位置到结束位置之前一个的字符。例如,在文件Example08.java的第15行代码中,传入的位置范围为2到7,实际上是替换字符串中的第3个到第7个字符,而不是第3个到第6个字符。StringBuffer类和StringBuilder类String类字符串类String类字符串对象不可变,仅用于表示数据类型。StringBuffer类StringBuffer类可以创建可变的字符串对象,是线程安全的。在多线程环境下,可以更安全的操作字符串。StringBuilder类StringBuilder类可以创建可变的字符串对象,是非线程安全的。在单线程环境下,代码性能更高。StringBuilder类提供了与StringBuffer类相似的方法用于操作字符串。StringBuffer类和StringBuilder类关于String类、StringBuffer类和StringBuilder类的使用时的注意事项。(1)在StringBuffer类与StringBuilder类中并没有对Object类的equlas()方法重写,具体示例如下。Strings1=newString("abc");Strings2=newString("abc");System.out.println(s1.equals(s2));//结果为trueStringBuffers3=newStringBuffer("abc");StringBuffers4=newStringBuffer("abc");System.out.println(s3.equals(s4));//结果为falseStringBuilders5=newStringBuilder("abc");StringBuilders6=newStringBuilder("abc");System.out.println(s5.equals(s6));//结果为falseStringBuffer类和StringBuilder类关于String类、StringBuffer类和StringBuilder类的使用时的注意事项。(2)String类对象可以用操作符“+”进行连接,而StringBuffer类和StringBuilder对象之间不能。【案例5-1】食材入库日志案例描述为了更好地掌握餐厅每天的经营情况,餐厅负责人每天下班前都会盘点当天食材的入库和消耗情况,进而计算当天的营收和次日的采购计划。对此餐厅负责人要求餐厅食材采购人员采购结束后记录采购明细。本任务要求编写一个程序,对食材入库进行日志记录。【案例5-1】食材入库日志案例效果任务小结本章详细介绍了JavaAPI的基础知识。首先讲解了Java中所有类的父类Object类,其次讲解了字符串类,包括String类、StringBuilder类和StringBuffer类,接着讲解了Java中的包装类、日期和时间类,然后讲解了System类、Math类以及Random类,最后讲解了Lambda表达式和正则表达式的使用。通过本章的学习,大家应该熟练掌握Java中API的使用,对以后的实际开发大有裨益。任务小结日期时间类任务二日期时间类对许多应用程序来说,对日期和时间进行操作是必不可少的。为了处理日期和时间,Java提供了多个内置的日期和时间类,使用这些日期和时间类,可以轻松地进行日期和时间的计算、比较和格式化操作。下面对Java中常用的日期时间类进行讲解。学习目标掌握LocalDate类和LocalTime类,能够使用LocalDate类和LocalTime类操作日期和时间
先定一个小目标!掌握LocalDateTime类,能够使用LocalDateTime类操作日期和时间掌握DateTimeFormatter类的使用,能够使用DateTimeFormatter类对日期和时间进行格式化熟悉Duration类和Period类,能够使用Duration类和Period类处理时间差LocalDate类和LocalTime类LocalDate类和LocalTime类都是JDK8引入的日期时间类。其中,LocalDate表示不带时区的日期,其内部包含了日期的年、月、日三个部分。LocalTime表示不带日期的时间,其内部包含了单一时间的时、分、秒以及纳秒四个部分。LocalDate类和LocalTime类1.LocalDate类LocalDate类的作用:它不存储和表示时间或时区,只是描述日期。LocalDate所表示的日期包括年、月和日3部分,如2022-07-01表示2022年7月1日。LocalDate类和LocalTime类1.LocalDate类LocalDate类提供了获取日期对象、获取日期的年月日、格式化日期、增减年月日等一系列方法。方法声明功能描述staticLocalDateof(intyear,Monthmonth,intdayOfMonth)根据指定的年、月和日获取LocalDate对象,其中year表示年份,month表示月份,dayOfMonth表示一个月中的哪一天staticLocalDatenow()从默认时区的系统时钟中获取当前日期对应的LocalDate对象intgetYear()获取日期的年份字段MonthgetMonth()使用Month枚举获取月份字段intgetMonthValue()获取当前日期的月份intgetDayOfMonth()获取当天未当月的第几天LocalDate类和LocalTime类1.LocalDate类接上页表格。方法声明功能描述Stringformat(DateTimeFormatter
formatter)使用指定的格式化程序格式化此日期booleanisBefore(ChronoLocalDate
other)检查当前日期是否在指定日期之前booleanisAfter(ChronoLocalDate
other)检查当前日期是否在指定日期之后booleanisEqual(ChronoLocalDate
other)检查当前日期是否等于指定的日期booleanisLeapYear()根据ISO预测日历系统规则,检查指定日期是否是闰年staticLocalDateparse(CharSequencetext)从一个文本字符串中获取一个
LocalDate的实例static
LocalDateparse(CharSequencetext,DateTimeFormatterformatter)使用特定格式格式化
LocalDate从文本字符串获取的
LocalDate实例LocalDate类和LocalTime类1.LocalDate类接上页表格。方法声明功能描述LocalDateplusYears(longyearsToAdd)增加指定年份LocalDateplusMonths(longmonthsToAdd)增加指定月份LocalDateplusDays(long
daysToAdd)增加指定天数LocalDateminusYears(long
yearsToSubtract)减少指定年份LocalDateminusMonths(long
monthsToSubtract)减少指定月份LocalDateminusDays(long
daysToSubtract)减少指定天数LocalDatewithYear(intyear)根据参数year修改日期的年份,并返回修改后的日期LocalDatewithMonth(intmonth)根据参数month修改日期的月份,并返回修改后的日期LocalDatewithDayOfMonth(intdayOfMonth)根据参数dayOfMonth修改日期的天数,并返回修改后的日期LocalDate类和LocalTime类1.LocalDate类下面通过一个案例演示LocalDate类一系列常用方法的使用。Example11.java源代码LocalDate类和LocalTime类1.LocalDate类案例的运行结果如下图所示。5.4.1LocalDate类和LocalTime类2.LocalTime类LocalTime类的作用:用来表示不带时区的时间,只对时分秒纳秒做出处理,默认格式为时:分:秒.纳秒,例如,11:23:40.051942200。与LocalDate类一样,LocalTime类不能代表时间线上的即时信息,只是描述时间。LocalDate类和LocalTime类2.LocalTime类LocalTime类中提供了获取时间对象的方法,以及增减时分秒等常用方法,这些方法与LocalDate类中的方法用法类似。常用方法如下表所示。方法声明功能描述staticLocalTimeof(inthour,intminute,intsecond,intnanoOfSecond)创建一个指定时、分、秒和纳秒的
LocalTime
对象staticLocalTimenow()从默认时区的系统时钟中获取当前时间对应的LocalTime对象intgetHour()获取时间的小时部分intgetMinute()获取时间的分钟部分intgetSecond()获取时间的秒部分LocalDate类和LocalTime类2.LocalTime类接上页表格。方法声明功能描述staticLocalTimeparse(CharSequencetext,DateTimeFormatterformatter)用于将字符串表示的时间按照指定的格式解析为
LocalTime
对象booleanisAfter(LocalTimeother)判断当前时间是否在指定时间之后booleanisBefore(LocalTimeother)判断当前时间是否在指定时间之前Stringformat(DateTimeFormatterformatter)将时间格式化为指定的字符串表示形式LocalTimewithNano(intnanoOfSecond)创建一个具有指定纳秒数的LocalTime实例LocalDate类和LocalTime类2.LocalTime类下面通过一个案例学习LocalTime类的方法。Example12.java源代码LocalDate类和LocalTime类2.LocalTime类案例的运行效果如下图所示。LocalDateTime类LocalDateTime类是LocalDate类与LocalTime类的综合,表示不带时区的日期和时间,默认的日期时间格式是年-月-日T时:分:秒.纳秒,如2023-11-06T13:43:25.774。LocalDateTime类包含了LocalDate类与LocalTime类的所有方法,并且LocalDateTime类还额外提供了日期时间的转换方法LocalDateTime类案例演示下面通过一个案例学习LocalDateTime类的日期时间转换方法。Example13.java源代码LocalDateTime类案例演示案例的运行结果如下图所示。DateTimeFormatter类使用LocalDate类、LocalTime类、LocalDateTime时,获取到的日期或者时间都是以默认的格式,如果想要将日期或者时间设置为其他指定的格式,可以使用格式化类。JDK8在java.time.format包提供了一个DateTimeFormatter类,该类是一个格式化类,它不仅可以将日期、时间对象格式化成字符串,还能将特定格式的字符串解析成日期、时间对象。DateTimeFormatter类要使用DateTimeFormatter进行格式化或者解析,就必须先获得DateTimeFormatter对象。获取DateTimeFormatter对象有3种方式。(1)方式一使用预定义的静态常量创建DateTimeFormatter格式器。在DateTimeFormatter类中包含大量预定义的静态常量,如BASIC_ISO_DATE、ISO_LOCAL_DATE等,通过这些静态常量都可以获取DateTimeFormatter实例。DateTimeFormatter类(2)方式二使用本地化样式创建DateTimeFormatter格式器。在FormatStyle类中定义了FULL、LONG、MEDIUM和SHORT四个枚举值,它们表示不同样式的日期和时间,这种方式通过ofLocalizedDateTime(FormatStyledateTimeStyle)实现DateTimeFormatter对象的创建。DateTimeFormatter类(3)方式三(最为常用)根据模式字符串创建DateTimeFormatter格式器,这种方式通过ofPattern(Stringpattern)方法实现DateTimeFormatter对象的创建。ofPattern()方法需要接收一个表示日期或时间格式的模板字符串,该模板字符串通过特定的日期标记可以提取对应的日期或时间。DateTimeFormatter类常用的格式化模板标记如下表所示。格式化选项表示含义y年份,4位数字,使用yyyy表示。例如“2023”M月份,2位数字,使用MM表示。例如“11”d日(天数),2位数字,使用dd表示。例如“01”H小时(24小时制),2位数字,使用HH表示。例如“10”m分钟,2位数字,使用mm表示。例如“15”s秒,2位数字,使用ss表示。例如“00”S毫秒,3位数字,使用SSS表示。例如“776”a上午/下午标记,例如“AM”或“PM”DateTimeFormatter类使用DateTimeFormatter将日期、时间格式化为字符串,有两种方式。(1)调用DateTimeFormatter的format(TemporalAccessortemporal)方法执行格式化,其中参数temporal是一个TemporalAccessor类型接口,其主要实现类有LocalDate、LocalTime、LocalDateTime。(2)调用LocalDate、LocalDateTime等日期、时间对象的format(DateTimeFormatterformatter)方法执行格式化。若要使用DateTimeFormatter将指定格式的字符串解析成日期、时间对象,可以使用日期时间对象所提供的parse(CharSequencetext,DateTimeFormatterformatter)方法。DateTimeFormatter类案例演示下面通过一个案例来演示,如何使用DateTimeFormatter来格式化日期、时间。Example14.java源代码DateTimeFormatter类案例演示案例的运行效果如下图所示。Duration类和Period类Duration类和Period类是Java中用于处理时间差的类,它们为开发人员提供了更方便的时间间隔计算方法。Duration类和Period类1.Duration类Duration类用来表示两个时间对象的时间间隔,可以用于计算两个时间对象相差的天数、小时数、分数、秒数、毫秒数、纳秒数。Duration类常用方法如下表所示。方法声明功能描述between(TemporalstartInclusive,TemporalendExclusive)获取一个Duration表示两个对象之间的持续时间toDays()计算两个时间相差的天数toHours()计算两个时间相差的小时数toMinutes()计算两个时间相差的分钟数toSeconds()计算两个时间相差的秒数toMillis()计算两个时间相差的毫秒数toNanos()计算两个时间相差的纳秒数Duration类和Period类1.Duration类下面通过一个案例演示Duration类中常用方法的使用。Example15.java源代码Duration类和Period类1.Duration类案例的运行结果如下图所示。Duration类和Period类2.Period类Period主要用于计算两个日期之间的间隔,可以用来计算两个日期之间相差的年、月、日。Period类的方法与Duration类的方法在使用上类似,Period类常用的方法如下表所示。方法声明功能描述between(LocalDatestart,LocalDateend)获取一个Period表示两个对象之间的持续时间getYears()计算两个日期相差的年数getMonths()计算两个日期相差的月数getDays()计算两个时间相差的天数Duration类和Period类2.Period类需要注意的是,使用getYears()方法、getMonths()方法和getDays()方法计算年数、月数和天数差时,只计算一个单位的字段值,而非整个Period的不同单位维度的总值。也就是说,计算两个时间的月份差时,不会包含年份在内,在计算天数差时,也不会包含月份和年份在内。Duration类和Period类2.Period类下面通过一个案例演示Period类常用方法的使用。Example16.java源代码5.4.4Duration类和Period类2.Period类案例的运行结果如下图所示。【案例5-2】日程安排管理案例描述随着生活节奏的加快,人们每天都面临的事务比较多样化,有时候可能会忘记一些重要的日程安排,例如会议,采访等。为了更好地管理和组织日常安排,本案例要求编写一个日程安排管理程序,具体要求如下。用户可以多次创建日程,但是最多只能创建20个,创建日程时包括日程的标题、日期和时间。要求日程的时间不能在当前时间之前。创建完成后,程序按照日程时间由近及远,展示用户的所有日程信息,包括标题、日期、时间、目前距离这个日程还有多久(格式:x天x小时x分钟),以及日程的创建时间。【案例5-2】日程安排管理案例效果任务小结本章详细介绍了JavaAPI的基础知识。首先讲解了Java中所有类的父类Object类,其次讲解了字符串类,包括String类、StringBuilder类和StringBuffer类,接着讲解了Java中的包装类、日期和时间类,然后讲解了System类、Math类以及Random类,最后讲解了Lambda表达式和正则表达式的使用。通过本章的学习,大家应该熟练掌握Java中API的使用,对以后的实际开发大有裨益。任务小结Math类与Random类任务三Math类与Random类Math类和Random类是Java提供的与数学相关的类,Math类位于java.lang包中,Random类位于java.util包中。本节将详细讲解Java中的Math类与Random类。学习目标掌握Math类的使用,能够使用Math类进行基本的数学运算
先定一个小目标!掌握Random类的使用,能够使用Random类生成随机数Math类Math类是一个工具类,其中提供了许多用于进行基本数值运算的方法,如计算一个数的平方根、绝对值等。Math类中的方法都是静态的,因此可以直接使用类名进行调用。除了静态方法外,Math类中还定义了两个静态常量PI和E,分别代表数学中的π和e。Math类Math类的常用方法如下表所示。方法声明功能描述abs(doublea)用于计算a的绝对值sqrt(doublea)用于计算a的平方根ceil(doublea)用于计算大于a的最小整数,并将该整数转化为double型数据。例如,Math.ceil(15.2)的值是16.0floor(doublea)用于计算小于a的最大整数,并将该整数转化为double型数据。例如Math.floor(-15.2)的值是-16.0round(doublea)用于计算小数a进行四舍五入后的int类型的值Math类接上页表格。方法名称功能描述max(doublea,doubleb)用于返回a和b的较大值min(doublea,doubleb)用于返回a和b的较小值random()用于生成一个[0.0,1.0)的随机值sin(doublea)返回a的正弦值pow(doublea,doubleb)用于计算a的b次幂,即ab的值Math类案例演示下面通过一个案例演示Math类常用方法的使用。Example20.java源代码Math类案例演示案例的运行结果如下图所示。Random类Random类可以生成指定取值范围的随机数字,它提供了两个构造方法用于创建Random对象,具体如下表所示。方法声明功能描述Random()使用当前机器时间创建一个Random对象Random(longseed)使用参数seed指定的种子创建一个Random对象第一个构造方法实际上使用时间戳作为种子传递给Random对象,所以每次生成的随机数每次都不同。第二个构造方法指定种子实现了可重现的随机数序列,因此可以创建多个相同的随机数。Random类Random类可以生成指定取值范围的随机数字,它提供了两个构造方法用于创建Random对象,具体如下表所示。方法声明功能描述Random()使用当前机器时间创建一个Random对象Random(longseed)使用参数seed指定的种子创建一个Random对象第一个构造方法实际上使用时间戳作为种子传递给Random对象,所以每次生成的随机数每次都不同。第二个构造方法指定种子实现了可重现的随机数序列,因此可以创建多个相同的随机数。Random类案例演示Random提供了nextInt()方法用于获取随机的整数,下面通过案例演示Random类的两个构造方法创建的Random对象获取随机数的效果。Example21.java源代码Random类案例演示第一次运行文件Example21.java的结果。第二次运行文件Example21.java的结果。Random类Random类常用的方法:方法声明功能描述booleannextBoolean()随机生成boolean类型的随机数longnextLong()随机生成long类型的随机数intnextInt()随机生成int类型的随机数intnextInt(intn)随机生成0~n(包含0但不包含n)之间int类型的随机数,doublenextDouble()随机生成0.0~1.0(包含0.0但不包含1.0)之间double类型的随机数floatnextFloat()随机生成0.0~1.0(包含0.0但不包含1.0)之间float类型的随机数Random类使用nextInt(intn)方法可以指定的范围为从0开始。如果需要生成非0开始的范围内的随机整数,例如,生成5~20之间的随机整数,可以使用如下代码。intrandomNumber=random.nextInt(15)+5;上述代码中,nextInt(15)将生成一个0~15之间的整数,然后通过+5操作将范围调整为5~20。Random类案例演示下面通过一个案例演示Random类中常用方法的使用。Example22.java源代码Random类案例演示案例的运行结果如下图所示。【案例5-3】小明的算术题卡案例描述某小学为了加强学生的算术能力,要求每位学生每天做一篇算术题卡,其中包括50道加减乘除的算术题。本案例要求为小明随机出50道100以内的加减法算式和20以内的乘除法算式,作为今天的算术题卡,具体要求如下。100以内指1~100,包括1和100。20以内指1~20,包括1和20。加法算式只要求两个加数小于100,结果可以大于100。减法算式要求结果为正数。乘法算式只要求两个乘数小于20,结果可以大于20。除法算式的结果可以为分数。【案例5-3】小明的算术题卡案例效果任务小结本章详细介绍了JavaAPI的基础知识。首先讲解了Java中所有类的父类Object类,其次讲解了字符串类,包括String类、StringBuilder类和StringBuffer类,接着讲解了Java中的包装类、日期和时间类,然后讲解了System类、Math类以及Random类,最后讲解了Lambda表达式和正则表达式的使用。通过本章的学习,大家应该熟练掌握Java中API的使用,对以后的实际开发大有裨益。任务小结正则表达式任务四正则表达式在程序开发中,常常需要对邮箱、手机号码和身份证号码等字符串做各种限制,例如限制它们的长度和格式。如果使用传统的条件语句或循环逐个检查字符,代码量会很庞大且难以维护。对此可以使用正则表达式,这是一种用于模式匹配和处理字符串的工具,基于正则表达式可以更高效地处理和匹配文本字符串,并减少代码复杂度。学习目标掌握正则表达式的元素,能够简述正则表达式常用元素的作用
先定一个小目标!掌握Pattern类和Matcher类的应用,能够使用Patter类和Matcher类进行字符串与正则表达式的匹配正则表达式的元素正则表达式是一种使用预先定义的特定字符、字符组合和语法规则来表达对字符串进行模式匹配和处理的工具,其组成元素可以为字符和特殊字符、量词、边界等,基于这些元素可以创建复杂的匹配模式,用于搜索和替换文本数据。正则表达式的元素1.普通字符和特殊字符普通字符:指那些可以直接匹配的字符,如大小写的字母、数字、空格等。例如,“a”和“1”都是普通字符。.(点号):匹配除换行符外的任意单个字符,例如,正则表达式“t.n”匹配“tan”“ten”。^:匹配输入字符串的开始位置,例如,“^abc”匹配以“abc”开头的字符串。$:匹配输入字符串的结束位置,例如,“abc$”匹配以“abc”结尾的字符串。+:匹配前面的模式一次或多次,例如,“a+”匹配一个或多个连续的“a”字符,“ab+”匹配一个“a”字符,后面跟着一次或多次出现的“b”字符。正则表达式的元素1.字符和特殊字符*:匹配前面的模式零次或多次,例如,“a*”匹配零个或多个连续的“a”字符,“ab*”匹配一个“a”字符,后面跟着零个或多个连续的“b”字符。?:匹配前面的模式零次或一次,例如,“a?”匹配零个或一个“a”字符,“ab?”匹配一个“a”字符,后面跟着零个或一个“b”字符。[]:定义一个字符集合,匹配其中任意一个字符,例如,“[abc]”匹配“a”、“b”或“c”中的任意一个字符。。():用于分组和捕获匹配的子表达式,例如,“(abc)”将“abc”视为一个整体进行匹配,“(ab)+”匹配一个或多个连续出现的“ab”。正则表达式的元素2.量词量词用于指定模式出现的次数,常见的量词如下。{n}:精确匹配前面的模式出现n次,例如,“a{3}”匹配连续出现三个“a”的字符串。{n,}:匹配前面的模式至少出现n次,例如,“a{3,}”匹配连续出现三个或更多个“a”的字符串。{n,m}:匹配前面的模式出现n到m次,例如,“a{2,4}”匹配连续出现两个到四个“a”的字符串。正则表达式的元素3.边界边界用于指定匹配的位置,常见边界如下。\b:匹配单词的边界,单词边界是指单词与其他字符之间的分界点,通常是单词的开头或结束位置,例如,“\bword\b”匹配独立的单词“word”。\B:匹配非单词的边界,例如,“\Bword\B”可以匹配“swording”中的“word”,但不匹配独立的“word”。正则表达式的元素除了前面的三种元素,正则表达式还有一些其他常用元素,具体如下。\d:匹配任何数字字符,相当于[0-9]。\D:匹配任何非数字字符,相当于[^0-9]。\s:匹配任何空白字符,包括空格、制表符、换行符等。\S:匹配任何非空白字符。\w:匹配任何字母数字字符,相当于[a-zA-Z0-9_]。\A:匹配字符串的开始位置,不受多行模式的影响。\G:匹配当前匹配操作的结束位置。Pattern类和Matcher类1.Pattern类Pattern类是用于表示正则表达式编译过程的类,位于java.util.regex包中。Pattern类的使用方式通常是将正则表达式编译为Pattern对象,然后使用该对象进行匹配操作。除此之外,它还提供了多个方法,用于对字符串进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地方文化旅游活动的宣传策略
- 2026海洋科普知识赛题试卷带答案
- 2026年吉林白城市中小学教师招聘考试题库及答案
- 2026年湖南省永州市中小学教师招聘考试考试题库(含答案)
- 2025年辽宁盘锦市中小学教师招聘考试试题题库(答案+解析)
- 人教部编版六年级下册习作:家乡的风俗一等奖教案
- 江西省万载县株潭中学高中语文 1 沁园春长沙教学设计 新人教版必修1
- 第一课 制作文本幻灯片教学设计小学信息技术(信息科技)四年级下册新世纪版
- 策划宣传合同
- 中国核工业集团校招试题及答案
- 2026年春季小学信息科技(甘肃版2021)四年级下册教学计划含进度表
- 工程建设标准强制性条文(房屋建筑部分)
- 建筑与小区雨水控制及利用工程技术规范
- 冲压检验制度及规范
- 湿地公园知识宣传课件
- 初中信息技术教育中生成式AI辅助教研决策的实践研究教学研究课题报告
- 第5章专题01平面向量及其应用(题型篇)(原卷版)
- 工厂车间手机管理制度
- 2025年浙江师范大学辅导员考试真题
- 房东委托开票法律文书模板
- DB34∕T 4465-2023 人力资源服务标准体系建设要求
评论
0/150
提交评论