- package com.anjoyo.chen;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- public class TestSimpleDateFormat {
- public static void main(String[] args) {
- Date d = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E"); //定义要使用的日期和时间的格式
- String s = sdf.format(d);
- System.out.println(s); //2012年11月23日 19时56分54秒 星期五
- Scanner sc = new Scanner(System.in);
- System.out.println("请按照格式输入:");
- String str = sc.nextLine(); //2012年11月23日 19时56分54秒 星期五
- try {
- System.out.println(sdf.parse(str)); //Fri Nov 23 19:56:54 CST 2012
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- }
由程序可以看出,我们使用SimpleDateFormat类来格式化日期。这里要说明的是,我们打开java的帮助文档,发现在SimpleDateFormat中format()方法是这么定义的:
public StringBuffer format(Date date, StringBuffer toAppendTo,FieldPosition pos);
这里定义的format方法传入了三个参数,为什么我们在程序中只传入了一个Date类型的对象d就可以了呢?
其实,SimpleDateFormat类继承自DateFormat类,在DateFormat类中,有public final String format(Date date)方法的定义,这样呢,SimpleDateFormat就继承了父类的这个方法,它和SimpleDateFormat本事中的format方法输入重载的关系,所以我们可以直接使用。
这里再啰嗦一下重载和重写:
假如子类中的方法和父类中的方法名字相同,如果:
1 参数不同,相当于方法的重载,发生在同一类中(子类)。这里的参数不同包括参数类型个数和次序不同等。
2 参数相同,叫方法的重写(覆盖),发生在父子类之间。
方法重写的要求:
1 同名且同参
2 方法的返回值也相同
3 子类方法修饰符不能比父类的方法修饰符更封闭(要么相同,要么更开放)
访问控制修饰符:private protected --- private 顺序:从封闭到开放
4 子类方法抛出的异常类型不能比父类方法抛出的异常类型更宽泛(或者说更大,更上层)
转载于:https://blog.51cto.com/632977922/1068913