版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1/52JavaJava程序设计程序设计精通常用类编程精通常用类编程 2/52学习目标学习目标SystemSystem类的使用类的使用字符串处理机制,掌握字符串的运算字符串处理机制,掌握字符串的运算掌握日期和时间,以及格式化日期的应用掌握日期和时间,以及格式化日期的应用能够利用不同的方法灵活完成随机数值的生成能够利用不同的方法灵活完成随机数值的生成理解正则表达式,能够完成简单的正则表达式的设计和理解正则表达式,能够完成简单的正则表达式的设计和应用应用理解并掌握观察者模式理解并掌握观察者模式理解和掌握反射和代理模式的编程理解和掌握反射和代理模式的编程3/5211.1 System11.1 Sys
2、temSystemSystemu凡是凡是java.langjava.lang包下面的类可以在程序中直接引用包下面的类可以在程序中直接引用无需显式用无需显式用importimport加载,因为加载,因为JVMJVM缺省就加载了该缺省就加载了该包下面的所有类。包下面的所有类。u SystemSystem类位于类位于java.langjava.lang包下面包下面4/52SystemSystem类类(cont.)(cont.)static static PrintStreamPrintStream err err“标准标准”错误输出流。默认是显示器错误输出流。默认是显示器static static
3、InputStreamInputStream inin“标准标准”输入流。默认是键盘输入流。默认是键盘static static PrintStreamPrintStream outout“标准标准”输出流。默认是显示器输出流。默认是显示器arraycopyarraycopy()()指定源数组中复制一个数组,复制从指定的位置开始,指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。到目标数组的指定位置结束。getProperties()确定当前的系统属性。确定当前的系统属性。loadLibrary(StringloadLibrary(String libnamelibna
4、me) )加载由加载由 libnamelibname 参数指定的系统库。将库名映射到实际参数指定的系统库。将库名映射到实际系统库的方法取决于系统系统库的方法取决于系统currentTimeMillis ()()返回以毫秒为单位的当前时间返回以毫秒为单位的当前时间setErr(PrintStreamsetErr(PrintStream err) err) 新分配新分配“标准标准”错误输出流。错误输出流。setIn(InputStreamsetIn(InputStream in) in)重新分配重新分配“标准标准”输入流。输入流。setOut(PrintStreamsetOut(PrintStre
5、am out) out) 重新分配重新分配“标准标准”输出流。输出流。package chap11.session1;package chap11.session1;import java.util.Properties;import java.util.Properties;public class SystemDemo public class SystemDemo public static void main(String args)public static void main(String args)Properties prop= Properties prop= System.
6、System.getPropertiesgetProperties();();/获得属性值获得属性值prop.list(prop.list(System.System.outout); ); /将所有属性全部显示到默认输出设备上将所有属性全部显示到默认输出设备上 /结果请见结果请见p221p2216/5211.2 String11.2 String与与StringBufferStringBuffer字符串常量字符串常量StringStringu是一个用双引号是一个用双引号( (“”) )括起来的字符序列括起来的字符序列 u编译器会为每一个编译器会为每一个字符串常量字符串常量创建对象创建对象。另
7、外,字符。另外,字符串常量中可以包含一些不能从键盘上输入的字符,这串常量中可以包含一些不能从键盘上输入的字符,这涉及到涉及到字符转义字符转义。例如:。例如:uThis is a u03c0 This is a u03c0 实际上就是实际上就是 This is a This is a u另外,字符串中的所有字符都是另外,字符串中的所有字符都是UnicodeUnicode字符,所以字符,所以每个字符均占两个字节。每个字符均占两个字节。7/5.2字符串常量的引用变量字符串常量的引用变量字符串常量字符串常量 和和 字符串常量的引用变量字符串常量的引用变量 是两个不同的概念,字符串
8、常量有在内存当中由编译是两个不同的概念,字符串常量有在内存当中由编译器分配的固定区域,保存有字符序列。而字符串常量器分配的固定区域,保存有字符序列。而字符串常量的引用变量只是一个引用变量,存放的是该字符串常的引用变量只是一个引用变量,存放的是该字符串常量所在的内存地址。量所在的内存地址。不能通过字符串常量的引用变量对字符串常量进行修不能通过字符串常量的引用变量对字符串常量进行修改。改。uString str=This is a string literal;String str=This is a string literal;ustr=This is other string literal
9、;str=This is other string literal;uString String strstr=This is a string literal;=This is a string literal;8/5.2字符串常量的引用变量字符串常量的引用变量另一个例子:另一个例子:uString str1=This is a string literal;String str1=This is a string literal;uString str2=This is + a string literal;String str2=This is + a string
10、 literal;u实际上实际上str1str1和和str2str2指向了指向了同一个对象同一个对象 9/5211.2.311.2.3字符串运算字符串运算字符串运算字符串运算 u字符串连接、比较、分割、子串的查询等字符串连接、比较、分割、子串的查询等连接连接(+)(+)uhello + namehello + nameuhello + hello + 张华张华 ustring is +5+5 string is 55string is +5+5 string is 55u5+5+ is a string 10 is a string5+5+ is a string 10 is a string
11、10/52字符串比较字符串比较u1)1)值比较:值比较主要比较两个字符串的字符序列。值比较:值比较主要比较两个字符串的字符序列。JavaJava中提供了几种方法:中提供了几种方法:u equals()equals():该方法在讲述对象之间的比较时,:该方法在讲述对象之间的比较时,已经提到已经提到equals()equals()方法主要是逻辑等判断,所方法主要是逻辑等判断,所以对于字符串来说,以对于字符串来说,比较的是字符序列,只要比较的是字符序列,只要字符序列相同,结果为字符序列相同,结果为truetrue。u equalsIgnoreCase(String anotherString)equ
12、alsIgnoreCase(String anotherString),此法忽略大小写。此法忽略大小写。String str1 = This is a string literal;String str1 = This is a string literal;String str2 = This is string literalString str2 = This is string literal ;falsefalse11/521)1)值比较:值比较:u compareTo()compareTo():按字典顺序比较两个字符串按字典顺序比较两个字符串。比。比较结果为一个较结果为一个整数整数
13、。u compareToIgnoreCase()compareToIgnoreCase()。String str1 = This is String str1 = This is a a string literal; string literal;String str2 = This is String str2 = This is s string literaltring literal ;-18-1812/522 2)同一比较:)同一比较:u “= =”“= =”判断两个对象是否引用是同一个对象,如判断两个对象是否引用是同一个对象,如果是,则返回果是,则返回truetrue。讨论讨论u
14、 String str1 = This is a string literal;String str1 = This is a string literal;u String str2 = This is;String str2 = This is;u String str3 = a string literal;String str3 = a string literal;u String str4 = This is+ a string literal;String str4 = This is+ a string literal;u String str5 = str2+str3;Str
15、ing str5 = str2+str3;u ?str4= =str1?str4= =str1u ?str5= =str1?str5= =str1true true falsefalse13/52名称名称解释解释intint length length( )( )返回字符串中字符的个数返回字符串中字符的个数char char charAtcharAt(int(int index) index)返回序号返回序号indexindex处的字符处的字符intint indexOfindexOf(String(String s) s)在接收者字符串中进行查找,如果包含在接收者字符串中进行查找,如果包含子
16、字符串子字符串s s,则返回匹配的第一个字符的则返回匹配的第一个字符的位置序号,位置序号, 否则返回否则返回-1String String substringsubstring(int(int begin, begin, intint end) end)返回接收者对象中序号从返回接收者对象中序号从beginbegin开始到开始到end-1end-1的子字符串的子字符串String String concatconcat(String(String s) s)返回接收者字符串与参数字符串返回接收者字符串与参数字符串s s进行连进行连接后的字符串接后的字符串14/524.4. 检索检索uStrin
17、gString中分别提供对于字符和子串的检索方法。中分别提供对于字符和子串的检索方法。表表11-2 String类的位置检索方法类的位置检索方法方法方法说明说明indexOf(int ch)回指定字符在此字符串中第一次出现处回指定字符在此字符串中第一次出现处的索引。的索引。indexOf(int ch, int fromIndex)从指定的索引开始搜索,返回在此字符从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。串中第一次出现指定字符处的索引。indexOf(String str)返回第一次出现的指定子字符串在此字返回第一次出现的指定子字符串在此字符串中的索引。符串中的索引。
18、indexOf(String str, int fromIndex)从指定的索引处开始,返回第一次出现从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。的指定子字符串在此字符串中的索引。15/52提取字符串提取字符串u StringString实例利用实例利用charAt()charAt()返回指定位置的单个字符;返回指定位置的单个字符;u 用用substring()substring()方法获得子串。方法获得子串。u 这两种提取方法,都必须限定在字符串的长度之内,这两种提取方法,都必须限定在字符串的长度之内,否则会得到一个越界异常。否则会得到一个越界异常。u 字符的开始位置
19、是字符的开始位置是0 0,而结束位置是,而结束位置是length()-1length()-1。 16/52 s.length()? s.length()? s.charAt(3)? s.charAt(3)? s.indexOf(“23”)? s.indexOf(“23”)? s.subString(4,6)? s.subString(4,6)? s1=s.concat(“789”); s1? s1=s.concat(“789”); s1? s? s?l举例:举例: String s1,s2, s=“您们好!您们好!123456”; 10!512您们好!您们好!123456789您们好!您们好!
20、12345617/52/* 程序程序11-2:一个字符串提取的程序:一个字符串提取的程序 */public class StringTakeDemo2 public static void main(String args) String str=This is a String;for(int i=0; istr.length(); i+) System.out.println( str.charAt(i) ); /得到指定位置的字符得到指定位置的字符System.out.println( str.substring(10) ); /截取部分字符串截取部分字符串System.out.prin
21、tln( str.substring(5,7) ); T Th hi is s i is s a a S St tr ri in ng gStringStringisis18/52名称名称解释解释String String replacereplace(char (char oldCharoldChar, char , char newCharnewChar); ); 将接收者字符串的将接收者字符串的oldChar替换为替换为newCharintint compareTocompareTo(String(String s); s); 将接收者对象与参数对象进行比较将接收者对象与参数对象进行比较
22、booleanboolean equalsequals(String (String s);s);接收者对象与参数对象的值进行比较接收者对象与参数对象的值进行比较String String trimtrim( ); ( ); 将接收者字符串两端的空字符串都去掉将接收者字符串两端的空字符串都去掉String String toLowerCasetoLowerCase()()将接收者字符串中的字符都转为小写将接收者字符串中的字符都转为小写String String toUpperCasetoUpperCase()()将接收者字符串中的字符都转为大写将接收者字符串中的字符都转为大写19/52us1=
23、s.replace(a,9); s1=s.replace(a,9); l举例:举例: String s1,s2, s=“123a4a5a6”; 123a4a5a6123949596s? S1?20/52分割分割u public String split(String regex)public String split(String regex)u split()split()方法提供了按照规定的格式分割字符串方法提供了按照规定的格式分割字符串的方法,结果是分割后的字符串数组。的方法,结果是分割后的字符串数组。 u 例如变量例如变量strstr引用的字符串是引用的字符串是“10,11,12,13
24、,14,15,16”10,11,12,13,14,15,16”,希望以,希望以逗号逗号作为分作为分隔符将其分开,可以采用下面的实现代码。隔符将其分开,可以采用下面的实现代码。String result = str.split(,);String result = str.split(,);21/52StringTokenizerStringTokenizer类(拆分字符串工具类)类(拆分字符串工具类)u允许以某种允许以某种分隔标准分隔标准将字符串分隔成单独的子字符将字符串分隔成单独的子字符串串. .u对字符串进行分隔的字符构成的字符串称为对字符串进行分隔的字符构成的字符串称为分隔符分隔符字符串
25、字符串。u例如例如: “: “How are you!”How are you!”的分隔符字符串为:的分隔符字符串为:“ “ ! !” “ “a+b+ca+b+c* *d”d”的分隔符字符串为:的分隔符字符串为:“+ +* *”u被分隔出的被分隔出的子字符串子字符串称为一个称为一个tokentoken22/52构造方法:构造方法:uStringTokenizer(String aString);StringTokenizer(String aString); 指定了将被分隔的字符串,指定了将被分隔的字符串,缺省的分隔符为缺省的分隔符为空格或空格或 n n或或 t t等。等。uStringTok
26、enizer(String aString, String StringTokenizer(String aString, String delimiters); delimiters); 除了指定将被处理的字符串,还指定了除了指定将被处理的字符串,还指定了分隔符字符串。分隔符字符串。uStringTokenizer(String aString, String StringTokenizer(String aString, String delimiters, boolean returnDelimiters);delimiters, boolean returnDelimiters); 第
27、三个参数如果为第三个参数如果为truetrue,则则分隔符本身也作为单词返回。分隔符本身也作为单词返回。23/52uStringTokenizerStringTokenizer类常用方法类常用方法uint int countTokens()countTokens() 返回单词的个数返回单词的个数uString String nextToken()nextToken() 返回下一个单词返回下一个单词uboolean boolean hasMoreTokens()hasMoreTokens() 是否还有单词是否还有单词uToken.javaToken.java24/5211.2.411.2.4构造
28、格式化字符串构造格式化字符串format()format()u类方法类方法format()format(),可以按照指定的格式和参数构,可以按照指定的格式和参数构造格式化字符串,造格式化字符串, public static String format(String format,Object. args)public static String format(String format,Object. args)25/5211.2.411.2.4构造格式化字符串构造格式化字符串/ /* * 程序程序11-311-3:一个构造格式化字符串的程序:一个构造格式化字符串的程序 * */ /publi
29、c class TestFormatString public class TestFormatString public static void main(String args) public static void main(String args) int i = 100;int i = 100;boolean status = true;boolean status = true;String str = Welcome;String str = Welcome; String newStr =String.formatString newStr =String.format(%10
30、d %b %10s,i,status,str);(%10d %b %10s,i,status,str); System.out.printf(newStr);System.out.printf(newStr); 100 true Welcome100 true Welcome26/5211.2.5 StringBuffer11.2.5 StringBuffer因为因为StringString对象是不能修改的对象是不能修改的,JavaJava语言提供了语言提供了另外一个能够修改的类似字符串的另外一个能够修改的类似字符串的字符串缓冲区字符串缓冲区类类,就是,就是StringBufferString
31、Buffer。对于对于StringBufferStringBuffer对象可以进行对象可以进行添加、删除、替添加、删除、替换等换等操作。操作。对象的长度对象的长度( (length)length)对象的容量对象的容量( (capacity)capacity)字符的个数字符的个数分配的存储空间分配的存储空间27/52创建创建uStringBuffer sbf = new StringBuffer();StringBuffer sbf = new StringBuffer(); 创建一个不带字符的缓冲区,默认容量为创建一个不带字符的缓冲区,默认容量为1616个个字符,随着操作字符,随着操作, ,
32、容量将发生变化。容量将发生变化。uStringBuffer sbf = StringBuffer sbf = new StringBuffer( new StringBuffer(初始化字符串初始化字符串);); 按照给定内容创建一个缓冲区按照给定内容创建一个缓冲区, ,初始容量为初始容量为16+16+字符长度。字符长度。uStringBuffer sbf = new StringBuffer(256);StringBuffer sbf = new StringBuffer(256); 创建一个具有初始容量的缓冲区。创建一个具有初始容量的缓冲区。28/52追加字符串追加字符串usbf.appe
33、nd(10);sbf.append(10);usbf.append(additional string );sbf.append(additional string );usbf.append(student1);sbf.append(student1);删除操作删除操作uStringBuffer delete(int, int) StringBuffer delete(int, int) uStringBuffer deleteCharAt(int) StringBuffer deleteCharAt(int) 增加操作增加操作uStringBuffer insert(int, boolea
34、n|Object|StringBuffer insert(int, boolean|Object|) )替换操作替换操作uStringBuffer replace(int, int, String)StringBuffer replace(int, int, String)uvoid setCharAt(int, char)void setCharAt(int, char)append(.)append(.)方法是一个适应方法是一个适应于基本类型和引用类型的方法。于基本类型和引用类型的方法。29/52名称名称解释解释IntInt lengthlength ( ) ( )返回字符串对象的长度返回
35、字符串对象的长度IntInt capacitycapacity( )( )返回字符串对象的容量返回字符串对象的容量void void ensureCapacityensureCapacity(int(int size)size)确保容量至少等于指定的确保容量至少等于指定的最小值最小值 void void setLengthsetLength(int(int lenlen) )设置字符串对象的长度。如果设置字符串对象的长度。如果lenlen的值小于当前字符串的长度的值小于当前字符串的长度,则尾部被截掉,则尾部被截掉char char charAtcharAt(int(int index) ind
36、ex)返回返回indexindex处的字符处的字符30/52名称名称解释解释void void setCharAtsetCharAt(int(int index, char c) index, char c)将将indexindex处的字符设置为处的字符设置为c cvoid void getCharsgetChars(int(int start, start, intint end, end, char char charArraycharArray, , intint newStartnewStart) )将接收者对象中从将接收者对象中从startstart位置到位置到end-1end-1位
37、置的字符拷贝到字符数位置的字符拷贝到字符数组组charArraycharArray中,从位置中,从位置newStartnewStart开始存放开始存放StringBufferStringBuffer reversereverse( )( )返回将接收者字符串逆转后的字返回将接收者字符串逆转后的字符串符串StringBufferStringBuffer insertinsert( ( intint index, index, Object ob Object ob ) )将将obob插入到插入到indexindex位置位置StringBufferStringBuffer appendappend
38、( ( Object obObject ob ) )将将obob连接到接收者字符串的末尾连接到接收者字符串的末尾31/52Complex c=new Complex(3,6);Complex c=new Complex(3,6);s.append(c); s?s.append(c); s?l举例:举例: StringBuffer s=new StringBuffer(“你好你好”); 你好你好3+6i32/52已知一个字符串,返回将字符串中的非字母字符都删除后的字符串已知一个字符串,返回将字符串中的非字母字符都删除后的字符串public class StringEditor public st
39、atic String removeNonLetters ( String original ) StringBuffer aBuffer = new StringBuffer(original.length(); char aCharacter; for (int i=0; i - 文本)、分析(文本文本)、分析(文本 - - 日期)和规范化日期)和规范化abstract abstract java.textjava.text. .DateFormatDateFormat是是日期日期/ /时间格式化子类时间格式化子类的的抽象类抽象类,它以与语言,它以与语言无关的方式格式化并分析日期或时间。日
40、期无关的方式格式化并分析日期或时间。日期/ /时时间格式化子类(如间格式化子类(如 SimpleDateFormatSimpleDateFormat)允许进)允许进行格式化(也就是日期行格式化(也就是日期 - - 文本)、分析(文文本)、分析(文本本- - 日期)和标准化。将日期表示为日期)和标准化。将日期表示为 Date Date 对对象,或者表示为从象,或者表示为从 GMTGMT(格林尼治标准时间)(格林尼治标准时间)1970 1970 年,年,1 1 月月 1 1 日日 00:00:00 00:00:00 这一刻开始的这一刻开始的毫秒数毫秒数36/52DateDate类类u构造方法构造方
41、法uDate( ) Date( ) 获得系统当前日期和时间值。获得系统当前日期和时间值。uDate(long date) Date(long date) 以以datedate创建日期对象,创建日期对象,datedate表示从表示从GMTGMT(格林威治)时间格林威治)时间1970-1-1 00:00:001970-1-1 00:00:00开始至某时刻的毫秒数开始至某时刻的毫秒数Date rightNow= new Date(10Date rightNow= new Date(10* *2424* *6060* *6060* *1000L);1000L);Date rightNow = new
42、Date(System. currentTimeMillis();Date rightNow = new Date(System. currentTimeMillis();获得日期时间对象获得日期时间对象Date rightNow= new Date();Date rightNow= new Date();.1获得日期对象获得日期对象37/523.3.日期对象的先后日期对象的先后 Date Date类提供了类提供了getTimegetTime() () 、after()after()、before()before()、compareTocompareTo()()和和toSt
43、ringtoString()()的方法。的方法。ugetTimegetTime()() : : 返回一个长整型表示时间,单位为毫秒返回一个长整型表示时间,单位为毫秒(millisecondmillisecond)uafter(Dateafter(Date d): d): 返回接收者表示的日期是否在给定的日期之返回接收者表示的日期是否在给定的日期之后后ubefore(Datebefore(Date d): d): 返回接收者表示的日期是否在给定的日期之返回接收者表示的日期是否在给定的日期之前前ucompareTo(compareTo(DateDate d) d):对两个日期实例的先后关系进行比较
44、。对两个日期实例的先后关系进行比较。utoStringtoString():():dow(weekday) mon dd hh:mm:ss zzz(时区) yyyy (p119) 38/5211.3.2 11.3.2 创建一个日历对象创建一个日历对象-Calendar-Calendar创建日历对象创建日历对象Calendar rightNow= Calendar . getInstance();Calendar rightNow= Calendar . getInstance();39/52星期的问题星期的问题星期的七天在星期的七天在CalendarCalendar中分别用中分别用7 7个数字
45、长量个数字长量1 1到到7 7来表示来表示public static final int SUNDAY =1public static final int SUNDAY =1public static final int MONDAY=2public static final int MONDAY=2月的问题月的问题 年的年的1212个月在个月在CalendarCalendar中对应于中对应于1212个整型值个整型值public static final int JANUARY = 0;public static final int JANUARY = 0;public static fina
46、l int FEBRUARY = 1;public static final int FEBRUARY = 1;40/52获得日历字段信息获得日历字段信息 public int get(int field)public int get(int field)例如:例如:rightNow. get(Calendar.YEAR)rightNow. get(Calendar.YEAR)日,星期,月,年的表示日,星期,月,年的表示: :Calendar.DATECalendar.DATECalendar.MONTH Calendar.MONTH Calendar.YEARCalendar.YEAR41/
47、52Calendar d=Calendar. getInstance();d.get(Calendar.DAY_OF_WEEK);l例:获取今天是星期几例:获取今天是星期几?42/52uset(int field, int value)set(int field, int value)给日期域设定特定的值给日期域设定特定的值uaCalendar.set(Calendar.MONTH, Calendar.JANUARY); aCalendar.set(Calendar.MONTH, Calendar.JANUARY); uaCalendar.set(1999, Calendar.AUGUST,
48、15); aCalendar.set(1999, Calendar.AUGUST, 15); u.例:修改例:修改d的日期为的日期为18号号?Calendar d=Calendar. getInstance();d.set(Calendar.DATE,18);43/5211.3.3 Date11.3.3 Date和和CalendarCalendar的转换的转换1.1. 通过通过CalendarCalendar对象获得对象获得DateDate对象对象uDate otherDate= rightNow. getTime();Date otherDate= rightNow. getTime();2
49、.2. 通过通过DateDate对象设置对象设置CalendarCalendar对象对象uCalendarCalendar的的setTime(Date date)setTime(Date date) 方法可以用给定的方法可以用给定的DateDate对象设置本身的时间。对象设置本身的时间。44/5211.3.411.3.4修改日历属性修改日历属性修改日历的属性具体有三种方法:修改日历的属性具体有三种方法: 直接设置某一个或几个属性,使用直接设置某一个或几个属性,使用set()set()方法。方法。u方法方法set(int field, int value)set(int field, int v
50、alue) u方法方法set(int year,int month,int date);set(int year,int month,int date);d.set(Calendar.DATE,18d.set(Calendar.DATE,18);例:有个日期对象为例:有个日期对象为d,修改其日期为,修改其日期为18号号?45/5211.3.411.3.4修改日历属性修改日历属性修改日历的属性具体有三种方法:修改日历的属性具体有三种方法: 采用设置时间的偏移,使用采用设置时间的偏移,使用add()add()方法方法uadd(int field, int amount) add(int field
51、, int amount) uaddadd方法有两个规则:见方法有两个规则:见p229p229u例子:例子:TestDate.javaTestDate.java46/5211.3.411.3.4修改日历属性修改日历属性修改日历的属性具体有三种方法:修改日历的属性具体有三种方法: 使用使用roll()roll()方法。方法。uroll(int field, int amount)roll(int field, int amount)u相对于相对于add()add()方法,偏移量的变化会导致更大方法,偏移量的变化会导致更大的时间字段发生变化,的时间字段发生变化,roll()roll()只在指定的字
52、段只在指定的字段及向下范围内变动及向下范围内变动,而不会修改更大的字段。,而不会修改更大的字段。u例子:例子: TestDate.java TestDate.java47/52Java.util.GregorianCalendarJava.util.GregorianCalendar类类u构造方法构造方法unew GregorianCalendar() / new GregorianCalendar() / 当前日期当前日期 unew GregorianCalendar(1999, 11, 31)new GregorianCalendar(1999, 11, 31)unew Gregorian
53、Calendar(1968, 0, 8, 11, 55)new GregorianCalendar(1968, 0, 8, 11, 55)ugetTime()getTime()方法方法 返回返回DateDate对象,显示日历对象,显示日历 System.out.println ( new GregorianCalendar().getTime() ); System.out.println ( new GregorianCalendar().getTime() ); 显示格式:dow(weekday) mon dd hh:mm:ss zzz(时区) yyyy (p119) 48/5211.3.
54、511.3.5格式化输出及日期型字符串解析格式化输出及日期型字符串解析利用利用DateFormatDateFormat完成本地化输出完成本地化输出Calendar rightNow = Calendar.getInstance();Calendar rightNow = Calendar.getInstance();DateFormat df = DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);DateFormat.getDateInstance(DateFormat.LONG, Locale.
55、CHINA);System.out.println(df.format(rightNow.getTime();System.out.println(df.format(rightNow.getTime();可以利用可以利用DateFormatDateFormat、 SimpleDateFormatSimpleDateFormat完成完成日期的格式化输出。日期的格式化输出。20112011年年1111月月1111日日49/52u应用应用SimpleDateFormatSimpleDateFormat类格式化日期的步骤:类格式化日期的步骤:u以指定格式的字符串以指定格式的字符串构造一个构造一个Si
56、mpleDateFormatSimpleDateFormat。例如:例如:sdf=sdf=new java.text.SimpleDateFormat(formatString);new java.text.SimpleDateFormat(formatString);u通过通过format(Date d)format(Date d)将此种格式应用于给定的日期将此种格式应用于给定的日期 例如:例如:sdfsdf.format(aDate);.format(aDate);50/52SimpleDateFormatSimpleDateFormatSimpleDateFormat sdf=Simpl
57、eDateFormat sdf= new SimpleDateFormat(yyyy-MM-dd HH:mm); new SimpleDateFormat(yyyy-MM-dd HH:mm);Date rightNow = new Date();Date rightNow = new Date();String result = sdf.format(rightNow);String result = sdf.format(rightNow);日期格式字符见日期格式字符见p230p230表表11-411-451/52formatStringformatString:各种格式字符串及其在日各种格
58、式字符串及其在日期期20072007年年4 4月月2626日下午日下午12:0812:08的应用结果的应用结果格式字符串格式字符串结果字符串结果字符串无无 Mon Apr 26 12:08:52 EDT 2007yyyy/MM/dd“ “2007/04/26yy/MM/dd“ “07/04/26MM/dd“ “07/26MMM dd,yyyyApr 26, 2007MMMM dd,yyyyApril 26, 2007EEE. MMMM dd,yyyyMon. April 26, 2007EEEE, MMMM dd,yyyyMonday, April 26, 2007h:mm a12:08 PM
59、MMMM dd, yyyy (hh:mm a)April 26, 2007 (12:08PM)52/52uGregorianCalendar gd=new GregorianCalendar GregorianCalendar gd=new GregorianCalendar (2007,4,10);(2007,4,10); Date d=gd.getTime(); Date d=gd.getTime(); SimpleDateFormat sdf=new SimpleDateFormat sdf=new SimpleDateFormat( SimpleDateFormat( “yyyy/mm
60、/dd”yyyy/mm/dd”);); System.out.println(sdf.format(d); System.out.println(sdf.format(d); l创建当前时刻的日期对象,并以创建当前时刻的日期对象,并以“2007/04/10”方式显示?方式显示?l 若以若以“2007年年04月月10号号”方式显示呢?方式显示呢?53/5211.3.511.3.5格式化输出及日期型字符串解析格式化输出及日期型字符串解析SimpleDateFormatSimpleDateFormat可以对一个符合格式的字符串可以对一个符合格式的字符串进行解析,形成一个日期对象。进行解析,形成一个日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GH/T 1472-2024鲜切果蔬包装通用技术要求
- (正式版)DB37∕T 3105-2018 《向日葵种子纯度蛋白电泳检测标准》
- 安防设备设施维保方案
- 产科护理循证实践
- 浙江省绍兴市越城区袍江中学2026届全国初三模拟考三全国I卷数学试题含解析
- 安全技术专项施工方案
- 2026年陕西省西安市西安交通大附属中学初三5月大联考(三)英语试题试卷含解析
- 山东省平邑县温水镇中学2026届初三2月第一次调研英语试题理试题含解析
- 安徽合肥市中学国科技大附属中学2025-2026学年中考一模试题含解析
- 广东省韶关市乐昌县市级名校2026年初三考前抢分(三)英语试题含解析
- 2017年3月中国科学院考博英语真题
- 膝关节韧带损伤康复护理指南
- 2025年及未来5年中国锂电池硬碳(HC)负极材料行业发展潜力预测及投资策略研究报告
- 2025年春季甘肃兰州市引进高层次人才和急需紧缺专业技术人才1199人模拟试卷及答案详解一套
- 金融租赁项目经理招聘面试题及答案
- 2025湖南能源集团电投公司社招39人笔试模拟试题及答案解析
- 中建综合支吊架施工方案
- 员工出行及上下班交通安全培训教育课件
- 四川省党校在职研究生招生考试真题(附答案)
- 基于人工智能的止痛设备智能优化研究-洞察阐释
- 肿瘤相关性肾病
评论
0/150
提交评论