字符串和正则表达式第7章实用类(自学).ppt_第1页
字符串和正则表达式第7章实用类(自学).ppt_第2页
字符串和正则表达式第7章实用类(自学).ppt_第3页
字符串和正则表达式第7章实用类(自学).ppt_第4页
字符串和正则表达式第7章实用类(自学).ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 语言程序设计,天津理工大学 计算机与通信工程学院 主讲教师:孙世温 ,2019/7/19,第6章 第7章 Java中的常用类,第 2 页,第6章 字符串和正则表达式 第7章 常用实用类,2019/7/19,第6章 第7章 Java中的常用类,第 3 页,主要内容,Object 类 System 类 Math 类 基本数据类型的包裹类 BigInteger 类 字符串相关类 String 类 StringBuffer 类 StringTokenizer 类 Date 类 Calender 类 正则匹配表达式,2019/7/19,第6章 第7章 Java中的常用类,第 4 页,Object 类“根”类,Object类定义在java.lang包中 所有的Java类派生自Object类 如果一个类没有用extends继承其他类,则它继承Object Object类是所有类层次结构的终极根类 Object包含一些有用的方法,这些方法被所有子类继承,2019/7/19,第6章 第7章 Java中的常用类,第 5 页,Object 类“根”类,Object类定义的方法之一:toString Object类的toString方法被定义返回一个字符串,包含对象的类名和对象的地址值 自定义的类重写toString方法,实质是覆盖了父类的toString方法 用println方法输出一个对象时,默认调用toString方法;如果自定义了toString方法,就调用自定义的;如果没有自定义,就调用继承来的toString方法,【例 toString的例子】,2019/7/19,第6章 第7章 Java中的常用类,第 6 页,Object 类“根”类,Object类定义的方法之二:equals Object类的equals方法确定两个引用变量是否是别名,与= =的用法相同(is identical to) 子类一般通过覆盖Object的equals方法实现更有意义的测试,可以实现:若同一类型的两个不同对象包含相同的信息即返回true(is equals to) 很多Java标准类都重新定义了自己的equals方法,实现两个对象的相等性比较,【例 TestEquals.java】,2019/7/19,第6章 第7章 Java中的常用类,第 7 页,System类,有三个标准I/O对象,又叫控制台I/O 标准输入(键盘) 由System.in定义 标准输出(显示器)由System.out定义 标准错误输出(显示器)由System.err定义 当执行print或println语句时,我们使用System.out对象 System.in是InputStream类的对象 用System.in.read( )从键盘读入一个字符,2019/7/19,第6章 第7章 Java中的常用类,第 8 页,基本数据类型的包裹类,Java的每种基本类型(8种)都有一个类与之对应,2019/7/19,第6章 第7章 Java中的常用类,第 9 页,包裹类使用示例,Boolean wrapBool = new Boolean(“false“); Integer num1 = new Integer (“31“); Integer num2 = new Integer(“3“); int sum = Value() * Value();,intValue() 返回调用对 象的整型值,class CmdArg public static void main(String args) int sum = 0; for(int cnt = 0; cnt args.length; cnt+) sum+=Integer.parseInt(argscnt); System.out.println(“和为:“+sum); ,parseInt()方法将执行 从字符串转换成与之相 应的整型(int)值,2019/7/19,第6章 第7章 Java中的常用类,第 10 页,Math类科学计算类,Math类定义在java.lang包中 其中包含许多数学计算方法: public static long abs(double a) 返回a的绝对值。 public static double max(double a,double b) 返回a、 b的最大值。 public static double min(double a,double b) 返回a、b的最小值。,2019/7/19,第6章 第7章 Java中的常用类,第 11 页,public static double random() 产生一个0到1之间的随机数(不包括0和1)。 public static double pow(double a,double b) 返回a的b次幂。 public static double sqrt(double a) 返回a平方根。 public static double log(double a) 返回a的对数。 public static double sin(double a) 返回正弦值。 public static double asin(double a) 返回反正弦。 ,2019/7/19,第6章 第7章 Java中的常用类,第 12 页,NumberFormat类数字的格式化输出,NumberFormat类类调用类方法: public static final NumberFormat getInstance()实例化一个NumberFormat对象 该对象调用 public final String format(double number) 方法可以格式化数字number NumberFormat类有如下常用方法: void setMaximumFractionDigits(int newValue) void setMinimumFractionDigits(int newValue) void setMaximumIntegerDigits(int newValue) void setMinimumIntegerDigits(int newValue),【例7-4】,2019/7/19,第6章 第7章 Java中的常用类,第 13 页,BigInteger类大整数类,java.math包中的BigInteger类提供任意精度的整数运算 构造方法: public BigInteger(String val) 类的常用方法: public BigInteger add(BigInteger val) public BigInteger subtract(BigInteger val) public BigInteger multiply(BigInteger val) public BigInteger divide(BigInteger val),2019/7/19,第6章 第7章 Java中的常用类,第 14 页,public BigInteger remainder(BigInteger val) public int compareTo(BigInteger val) public BigInteger abs() public BigInteger pow(int exponent) public String toString() 返回当前大整数对象 十进制的字符串表示 public String toString(int p) 返回当前大整数对象p进制的字符串表示,【例7-6】,2019/7/19,第6章 第7章 Java中的常用类,第 15 页,String类不可变字符串,构建String对象 String s=new String(“I love Java”) String s1=“I love Java”; String s2=new String(s); char Ar=J, a, v, a; String s3=new String(Ar); String s4=new String(Ar,2,2);,构造函数String(char a,int startIndex,int count): 提取字符数组a 中的一部分字符创建一个字符串对象, 参数startIndex:在a中提取字符的起始位置 count: 从指定位置开始截取的字符个数,2019/7/19,第6章 第7章 Java中的常用类,第 16 页,String类中的常用方法: (1)返回长度:public int length() (2)比较: public boolean equals(String s) 比较当前字符串对象的实体是否与参数指定的字符串s的实体相同 public int compareTo(String s)按字典序与参数s指定的字符串比较大小。 (3)判断 public boolean startsWith(String s) public boolean endsWith(String s),2019/7/19,第6章 第7章 Java中的常用类,第 17 页,(4)检索 public int indexOf (String s) public int indexOf(String s ,int startpoint) public int lastIndexOf (String s) (5)子串 public String substring(int startpoint) public String substring(int start ,int end) public String trim() (6)替换 public String replaceAll(String old ,String new),2019/7/19,第6章 第7章 Java中的常用类,第 18 页,字符串 基本数据 基本数据类型包裹类中方法: public static XXX parseXXX(String s) 将“数字”格式的字符串,转化为相应的基本数据类型 如:Integer类的方法: public static int parseInt(String s),2019/7/19,第6章 第7章 Java中的常用类,第 19 页,基本数据 字符串 使用String 类的下列类方法: public String valueOf(byte n) public String valueOf(int n) public String valueOf(long n) public String valueOf(float n) public String valueOf(double n) 对象的字符串表示 重写toString()方法,2019/7/19,第6章 第7章 Java中的常用类,第 20 页,String与字符数组(char ) 利用字符数组构建字符串 String(char ) String(char ,int offset,int length) 将字符串存放到字符数组中 public void getChars (int start,int end,char c ,int offset ) public char toCharArray(),【例6-4】,2019/7/19,第6章 第7章 Java中的常用类,第 21 页,String与字节数组(byte ) 利用字节数组构建字符串 String(byte ) String(byte ,int offset,int length) 字符串转化为字节数组 public byte getBytes(),【例6-5】,2019/7/19,第6章 第7章 Java中的常用类,第 22 页,StringBuffer类可变字符串,String类字符串不能修改、删除或替换字符串中的某个字符 StringBuffer类能创建可修改的字符串序列 StringBuffer类有三个构造方法: (1)StringBuffer() (2)StringBuffer(int size) (3)StringBuffer(String s),2019/7/19,第6章 第7章 Java中的常用类,第 23 页,StringBuffer类的常用方法: (1)append方法 (2)char charAt(int n) (3)void setCharAt (int n , char ch) (4)StringBuffer insert(int index, String str) (5)StringBuffer reverse() (6)StringBuffer delete(int startIndex, int endIndex) (7)StringBuffer replace( int startIndex ,int endIndex, String str),【例6-6】,2019/7/19,第6章 第7章 Java中的常用类,第 24 页,StringTokenizer类字符串分解,使用java.util包中的StringTokenizer类将字符串分解成可被独立使用的单词 StringTokenizer类的构造方法 StringTokenizer(String s) 为字符串s构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符。 StringTokenizer(String s, String delim) 为字符串s构造一个分析器,参数dilim中的字符被作为分隔符。,【例6-7】,2019/7/19,第6章 第7章 Java中的常用类,第 25 页,Date类时间、日期,Date类构造方法 无参Date()创建的对象可以获取本地当前时间 Date(long time)创建的Date对象表 示相对1970年1月1日0点(GMT)的时间 System类currentTimeMillis()获取系统当前时间,这个时间是从1970年1月1日0点(GMT)到目前时刻所走过的毫秒数,2019/7/19,第6章 第7章 Java中的常用类,第 26 页,使用DateFormat的子类SimpleDateFormat来实现日期的格式化 SimpleDateFormat有一个常用构造方法:public SimpleDateFormat(String pattern)该构造方法可以用参数pattern指定的格式创建一个对 象 SimpleDateFormat类的对象调用 format(Date date)方法格式化时间对象date,2019/7/19,第6章 第7章 Java中的常用类,第 27 页,pattern中含有“时间元字符”,即要输出的日期的格式设定 y或yy 表示用2位数字输出年份; yyyy 表示用4位数字输出年份; M或MM 表示用2为数字或文本输出月份; d 或dd 表示用2位数字输出日; H或HH 表示用两位数字输出小时; m或mm 表示用两位数字输出分; s或ss 表示用两位数字输出秒; E 表示用字符串输出星期;,【例7-1】,2019/7/19,第6章 第7章 Java中的常用类,第 28 页,Calender类日历,使用Calendar类的static方法getInstance()可以初始化一个日历对象,如: Calendar calendar= Calendar.getInstance(); calendar对象可以调用方法: public final void set(int year,int month,int date) public final void set(int year,int month,int date,int hour,int minute) public final void set(int year,int month, int date, int hour, int minute,int second) public int get(int field) 可以获取有关年份、月份、小时、星期等信息,【例7-2】,【例7-3】,2019/7/19,第6章 第7章 Java中的常用类,第 29 页,正则表达式之 Backus-Naur范式(BNF),元符号:BNF规定了一些符号作为描述语法的机制,称作元符号,包括: := 表示“定义为”。 | 表示“或者”。 表示“任选”,即方括号内的内容可以出现一次或不出现。 表示“重复”,即花括号内的内容可以出现零次或任意多次。 终结符号:BNF中不必定义的符号或字符串,如A、B、0、1等,2019/7/19,第6章 第7章 Java中的常用类,第 30 页,非终结符号:在用法规则中需要加以定义的语法变量,如字母、数字、标识符 a_06 , list 等 每一个非终结符号都必须有一个规则定义它,非终结符号按规则总是可以展开为一串终结符号。,正则表达式之 Backus-Naur范式(BNF),2019/7/19,第6章 第7章 Java中的常用类,第 31 页,例:标识符的BNF描述。 标识符 := 字母 字母 | 数字 字母 := A | B | | Z | a | b | | z | _ 数字 := 0 | 1 | | 9,正则表达式之 Backus-Naur范式(BNF),2019/7/19,第6章 第7章 Java中的常用类,第 32 页,正则表达式与模式匹配,1正则表达式 一个正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符。 “dok”中的d就是有特殊意义的元字符,代表0到9中的任何一个。 一个正则表达式也称作一个模式. 字符串“9ok”和“1ok”都是和模式:“dok”匹配的字符串之一。 和一个模式匹配的字符串称作匹配模式字符串,也称作模式匹配字符串。,2019/7/19,第6章 第7章 Java中的常用类,第 33 页,正则表达式与模式匹配,2模式匹配 模式匹配就是检索和指定模式匹配的字符串。 Java提供了专门用来进行模式匹配的类,这些类在java.util.regex包中。,2019/7/19,第6章 第7章 Java中的常用类,第 34 页,(1)建立模式对象 进行模式匹配的第一步就是使用Pattern类创建一个对象,称作模式对象。 Pattern类调用类方法compile(String patter)来完成这一任务,其中的参数patter是一个正则表达式,称作模式对象使用的模式。 【例】我们使用正则表达式“Ad”建立一个模式对象p: Pattern p= Ppile(“Ad“); 如果参数patter指定的正则表达式有错,complie方法将抛出异常:PatternSyntaxException。,2019/7/19,第6章 第7章 Java中的常用类,第 35 页,Pattern类也可以调用类方法compile(String regex, int flags)返回一个Pattern对象。 参数flags可以取下列有效值: Pattern .CASE_INSENSITIVE Pattern.MULTILINE Pattern.DOTALL Pattern.UNICODE_CASE Pattern.CANON_EQ flags取值Pattern .CASE_INSENSITIVE,模式匹配时将忽略大小写。,2019/7/19,第6章 第7章 Java中的常用类,第 36 页,(2)建立匹配对象 模式对象p调用matcher(CharSequence input)方法返回一个Matcher对象m,称作匹配对象。 参数input可以是任何一个实现了CharSequence接口的类创建的对象。 String类和StringBuffer类都使用了CharSequence接口。,2019/7/19,第6章 第7章 Java中的常用类,第 37 页,public boolean find( ) 寻找input和patter匹配的下一子序列 public boolean matches( ) 判断input是否完全和patter匹配。 public boolean lookingAt( ) 判断从input的开始位置是否有和patter匹配的子序列。,一个Matcher对象m可以使用下列3个方法寻找参数input指定的字符序列中是否有和模式patter匹配的子序列(patter是创建模式对象p时使用的正则表达式)。,2019/7/19,第6章 第7章 Java中的常用类,第 38 页,Matcher对象m常用的方法: public boolean find(int start) 判断input从参数start指定位置开始是否有和patter匹配的子序列,参数start取值0时,该方法和lookingAt( )的功能相同。 public String replaceAll(String replacement) Matcher对象m调用该方法可以返回一个字符串对象,该字符串是通过把input中与模式patter匹配的子字符串全部替换为参数replacement指定的字符串得到的(注意,input本身没有发生变化)。 public String replaceFirst(String replacement) Matcher对象m调用该方法可以返回一个字符串对象,该字符串是通过把input中第1个与模式patter匹配的子字符串替换为参数replacement指定的字符串得到的(注意,input本身没有发生变化)。,【例6-8】,2019/7/19,第6章 第7章 Java中的常用类,第 39 页,元字符模式,在正则表达式(模式)中可以使用一对中括号括起若干个字符,代表中括号中的任何一个字符。 【例】pattern=“159ABC” “1ABC” 、“5ABC”和“9ABC”都是和模式pattern匹配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论