字符串和日期类.ppt
1第第5章章 字符串和日期类字符串和日期类 由于在编程设计中字符串应用非常广泛,因此Java把字符串作为类来处理。如果需要对字符串进行拼接,则StringBuffer类将会比String更好地完成任务。StringTokenizer对象对分析字符串提供帮助。另外与日常工作相关的就是日期对象:Date和Calendar对象。在本章将详细介绍这几个编程设计中经常使用的类。2本章知识要点:本章知识要点:了解字符串对象的几种定义方式和区别掌握字符串对象常用的方法和属性掌握StringBuffer对象的使用方法掌握StringTokenizer对象的使用方法了解Date和Calendar类的基本使用方法掌握格式化文本的方法理解String、StringBuffer和StringTokenizer对象的区别35.1 字符串对象字符串对象String类类 Java使用java.lang包中的Sting类来创建一个字符串对象。Java中的字符串是使用String对象表示,这不同于其他的设计语言,例如在C语言中字符串是一个字符数组,可以通过使用数组的方式来使用字符串。5.1.1 创建创建String对象对象 字符串对象被赋值之后,某种意义上其值是不可变的,即它们的值在创建之后不能通过字符串方法进行更改,但可以使用其他变量重新赋值进行更改。字符串常量是使用双引号引起的内容,例如“”天气晴朗”、“”123.3”、“”student”等。45.1.2 常用方法常用方法 这些常用方法根据其作用可以分为:字符串比较、字符串检索、字符串替换、字符串截取和类型转换等五类。5方法名称及返回值类型概述char charAt(int index)返回指定索引处的char值。int codePointAt(int index)返回指定索引处字符的编码值(Unicode编码)。int compareTo(String anotherString)按字典顺序比较两个字符串。String concat(String str)将指定字符串连接到此字符串的结尾。boolean endsWith(String suffix)判断此字符串是否以指定的后缀结束。boolean equals(Object anObject)将此字符串与指定的对象比较。boolean equalsIgnoreCase(String anotherStr)将此字符串与指定字符串比较,忽略大小写。byte getBytes()使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中。int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引值。boolean isEmpty()当且仅当length()为0时返回true。int lastIndexOf(int ch)返回指定字符在此字符串中最后一次出现处的索引值。int length()返回此字符串的长度。boolean matches(String regex)判断此字符串是否匹配给定的正则表达式。boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)判断两个字符串区域是否相等。String replace(char oldChar,char newChar)返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。String split(String regex)根据给定正则表达式的匹配拆分此字符串。boolean startsWith(String prefix)判断此字符串是否以指定的前缀开始。String substring(int beginIndex)返回一个新的字符串,它是此字符串的子字符串。char toCharArray()将此字符串转换为一个新的字符数组。String toLowerCase()使用默认语言环境的规则将此String中的所有字符都转换为小写。String toUpperCase()使用默认语言环境的规则将此String中的所有字符都转换为大写。String trim()返回字符串的副本,忽略前导空白和尾部空白。static String valueOf(boolean b)返回boolean参数的字符串表示形式。5.2 StringBuffer类类 StringBuffer类允许用户创建可以以各种方式修改的字符串对象,它与描述字符串常量的String类不同。当用户使用StringBuffer类的字符串时,用户并没有创建一个新的String对象,而是直接操作源字符串本身。为此,StringBuffer类提供了与String类不同的方法集,所有的操作都直接发生在包含该字符串的缓冲区上。65.2.1 创建创建StringBuffer对象对象 与创建String对象不同,创建StringBuffer对象必须使用构造方法来创建。StringBuffer类提供了几个构造方法允许用户以各种方式构造StringBuffer对象。7构造方法概述StringBuffer()构造一个其中不带字符的字符串缓冲区,初始容量为16个字符。StringBuffer(int capacity)构造方法构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。5.2.2 常用方法常用方法在本节将介绍StringBuffer对象常用方法:8方法名称及返回值类型概述StringBuffer append(boolean b)向该序列追加参数所指定的布尔值。StringBuffer append(String str)向该序列追加参数所指定的字符串。int capacity()返回StringBuffer对象当前的容量。char charAt(int index)返回参数所指定索引位置的字符。StringBuffer delete(int start,int end)从该序列中删除参数所指定的子序列。int indexOf(String str)返回在该序列中首次出现指定字符串的索引值。int indexOf(String str,int fromIndex)返回从该序列指定索引开始,首次出现指定字符串的索引值。StringBuffer insert(int offset,String str)向该序列中指定的索引处插入指定字符串。int lastIndexOf(String str,int fromIndex)返回从该序列指定索引开始,最后一次出现指定字符串的索引值。int length()返回该序列中包含的字符数。StringBuffer replace(int start,int end,String str)使用参数指定的字符串替换该序列中指定的内容。StringBuffer reverse()把该序列反序排列。void setCharAt(int index,char ch)用指定字符替换该序列指定索引处的字符。String substring(int start)返回该序列中指定的字符串。5.3 StringTokenizer类类 有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。例如。对于字符串,如果我们把点号作为该字符串的分隔符,那么该字符串有三个语言符号。当我们分析一个字符串时,可以使用java.util包中的StringTokenizer类。95.4 Date类和类和Calendar 使用Date类的无参数构造方法创建的对象可以获取本地当前时间。Date对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。10方法名称及返回值类型概述boolean after(Date when)判断此日期是否在指定日期之后。boolean before(Date when)判断此日期是否在指定日期之前。int compareTo(Date anotherDate)比较两个日期的顺序。boolean equals(Object obj)比较两个日期的相等性。long getTime()返回自00:00:00 GMT以来,此Date对象表示的毫秒数。String toString()把此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy。其中:dow是一周中的某一天(Sun,Mon,Tue,Wed,Thu,Fri,Sat)。115.4.2 Calendar类类 Calendar类在java.util包中。创建一个Calendar对象使用Calendar类的static方法getInstance()可以初始化一个日历对象。int get(int field)返回给定日历字段的值。int getFirstDayOfWeek()获取一星期的第一天;例如,在美国,这一天是SUNDAY,而在法国,这一天是MONDAY。int get(int field)返回给定日历字段的值。static Calendar getInstance()使用默认时区和语言环境获得一个日历。Date getTime()返回一个表示此Calendar时间值(从历元至现在的毫秒偏移量)的Date对象。long getTimeInMillis()返回此Calendar的时间值,以毫秒为单位。void set(int year,int month,int date,int hourOfDay,int minute,int second)设 置 字 段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE和SECOND的值。void setTime(Date date)使用给定的Date设置此Calendar的时间。String toString()返回此日历的字符串表示形式。125.5 格式化文本格式化文本 在编程过程中,程序员往往会遇到显示货币、日期等数据的特殊需求,而通过在现实中加入分隔符是十分麻烦的。为此,Java语言提供了专门的类,用来格式化输出特殊的数据,比如日期、数字、货币和百分数。5.5.1 格式化日期格式化日期 对日期和时间进行格式化,可以使用Java提供的DateFormat类来处理。它首先需要使用默认的,或是调用静态的getAvailableLocales()方法,来获取对日期格式化进行支持的locale数组。13方法名称及返回值类型概述DateFormat getDateInstance(dataStyle,loc)用于对已经获得的日期locale数组,按照指定的日期格式dataStyle格式化DateFormat getTimeInstance(timeStyle,loc)用于对已经获得的时间locale数组,按照指定的时间格式timeStyle格式化DateFormat getDateTimeInstance(dataStyle,timeStyle,loc)用于对已经获得的日期、时间的locale数组,按照指定的日期、时间格式格式化Void format()用制定的日期或时间格式,来格式化日期或时间5.5.2 格式化数字格式化数字 对数字、货币的格式化,Java语言提供了NumberFormat类来处理有关的问题。此类提供的方法,可以分别对数字、货币量和百分比进行格式化和分析。14方法名称及返回值类型概述NumberFormat getCurrencyInstance()用于返回一个NumberFormat对象,按照当前地区的规则,把货币值转换为字符串NumberFormat getNumberInstance()用于返回一个NumberFormat对象,按照当前地区的规则,格式化数字NumberFormat getPercentInstance()用于返回一个NumberFormat对象,把百分数转换为字符串String format(double num)将双精度数字转化为字符串void setMaximumFractionDigits(int a)用于设定格式化对象中,小数点后显示的最多位数void setMaximumIntegerDigits(int a)用于设定格式化对象中,小数点前显示的最多位数void setMinimumFractionDigits(int a)用于设定格式化对象中,小数点后显示的最少位数void setMinimumIntegerDigits(int a)用于设定格式化对象中,小数点前显示的最少位数