为了账号安全,请及时绑定邮箱和手机立即绑定

Java学习2-日期类和Collection集合

标签:
Java

Java学习2-日期类和Collection集合

一、日期类

1.date类

1.1 构造方法

date类用来获取时间,将毫秒值转化为时间。常用构造方法有如下:

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

    无参构造可以获得当前的系统时间,有参构造根据你传入的毫秒值来获得相应的时间。

1.2 常用方法

  • public long getTime() 把日期对象转换成对应的时间毫秒值。

    import java.util.Date;public class Demo01Date {    public static void main(String[] args) {        Date date1 = new Date();        Date date2 = new Date(1);                System.out.println(date1);//Fri Aug 03 10:53:06 CST 2018        System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970        System.out.println(date1.getTime());//1533264786720    }}


2.DateFormat类

DateFormat类是一个抽象类,它有一个子类SimpleDateFormat,用来把Date类型的日期和字符串类型的日期按照指定格式进行相互转换。

2.1 构造方法

public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

常用的日期格式符号

字母(区分大小写)含义
y
M
d
H
m
s

2.2 常用方法

  • public String format(Date date):将Date对象格式化为字符串。

  • public Date parse(String source):将字符串解析为Date对象。

import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Demo02DateFormat {    public static void main(String[] args) throws ParseException {        DateFormat dtf = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分ss秒");        String str = dtf.format(new Date());        System.out.println(str);//2018年08月03日  11时20分12秒        System.out.println(dtf.parse(str));//Fri Aug 03 11:20:12 CST 2018    }}

[注意:在使用parse方法时,需要进行异常抛出。]    DateFormat dtf = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分ss秒");使用了多态,也可将DateFormat改为SimpleDateFormat.


3.Calendar类

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象。可以用来获取年月日,星期几等。

3.1 获取对象方法

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历

3.2 常用方法

  • public int get(int field):返回给定日历字段的值。

  • public void set(int field, int value):将给定的日历字段设置为给定值。

  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。

  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

    字段值含义:


/*求出给定日期是星期几 */import java.util.Calendar;public class Demo01 {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        //西方国家月份0-11,一星期从周日开始        cal.set(Calendar.YEAR, 2018);        cal.set(Calendar.MONTH, 7);   //代表中国的8月份        cal.set(Calendar.DATE, 1);        int year = cal.get(Calendar.YEAR);        int month = cal.get(Calendar.MONTH) + 1;        int date = cal.get(Calendar.DATE);        int week = cal.get(Calendar.DAY_OF_WEEK);   //week为4,代表中国的星期3        System.out.println(year+"年"+month+"月"+date+"日是星期"+getWeek(week));    }    //获取数字周几对应的汉字    public static char getWeek(int week) {        char[] chs = {' ', '日', '一', '二', '三', '四', '五', '六'};        return chs[week];    }}


二、Collection集合

集合按照其存储结构可以分为两大类,分别是单列集合Collection和双列集合Map。Collection是单列集合类的跟接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List、Set。List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。接口的主要实现类如下:


1.Collection常用方法


  • public boolean add(E e):  把给定的对象添加到当前集合中 。

  • public void clear() :清空集合中所有的元素。

  • public boolean remove(E e): 把给定的对象在当前集合中删除。

  • public boolean contains(E e): 判断当前集合中是否包含给定的对象。

  • public boolean isEmpty(): 判断当前集合是否为空。

  • public int size(): 返回集合中元素的个数。

  • public Object[] toArray(): 把集合中的元素,存储到数组中。


import java.util.ArrayList;import java.util.Collection;public class Demo02Collection {    public static void main(String[] args) {        Collection<String> coll = new ArrayList<>();        coll.add("曹操");        coll.add("刘备");        coll.add("孙权");        boolean flag1 = coll.add("司马懿");//返回布尔值        for (String s : coll) {            System.out.print(s + "  ");        }        System.out.println();        boolean flag2 = coll.remove("司马懿");//删除指定对象,返回布尔值        for (String s : coll) {            System.out.print(s + "  ");        }        System.out.println();        boolean flag3 = coll.contains("孙权");//判断集合是否包含该对象        Object[] objects = coll.toArray();//将集合转化为Object[]数组        System.out.println("转化为数组后遍历:");        for (Object o : objects) {            System.out.print(o + "  ");        }        System.out.println();        coll.clear();//清空集合        boolean flag4 = coll.isEmpty();//判断集合是否为空        System.out.println(flag4);    }}

[Collection<String> coll = new ArrayList<>();]    用Collection子接口的List的实现类ArrayList来创建对象,体现多态性

2.Iterator迭代器

2.1 常用方法

Iterator迭代器主要用来遍历集合,遍历之前先获取该集合的迭代器。iterator()方法获得迭代器对象,然后使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。

  • public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

  • public E next():返回迭代的下一个元素。

  • public boolean hasNext():如果仍有元素可以迭代,则返回 true。

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Demo01 {    public static void main(String[] args) {        Collection<String> c = new ArrayList<>();        c.add("曹操");        c.add("刘备");        c.add("孙权");        Iterator<String> it = c.iterator();//创建集合对象的迭代器        while (it.hasNext()) {  //判断下一个元素是否为空            System.out.println(it.next());  //不为空输出元素        }    }}


3.增强for循环

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式如下:

for(元素的数据类型  变量 : Collection集合or数组){    //写操作代码}
import java.util.ArrayList;import java.util.Collection;/*增强for循环,只能遍历,不能改动数值,底层用的也是迭代器 */public class Demo02Foreach {    public static void main(String[] args) {        Collection<String> c = new ArrayList<>();        c.add("曹操");        c.add("刘备");        c.add("孙权");        for (String s:c) {            System.out.println(s);        }    }}


4.泛型

泛型:当创建集合对象时,在<>中填写的引用数据类型,用来限制数据的类型,不添加泛型时,集合中既能存储字符串,也能存储数字等。在迭代遍历时,要进行数据类型强制转换,可能出现ClassCastException错误,使用泛型能够避免这种错误。

1.定义含有泛型的类

格式:

修饰符 class 类名<代表泛型的变量> {  }

创建类时,加入泛型,创建对象时,确定具体的数据类型。

public class Person<E> {    private E name;    public Person(E name) {        this.name = name;    }    public void show(E smallName) {        System.out.println("名字为:" + name + ",小名为:" + smallName);    }}public class Demo01 {    public static void main(String[] args) {        Person<String> p = new Person<>("张三");        p.show("狗娃");   //名字为:张三,小名为:狗娃    }}

2.定义含有泛型的方法

格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

创建方法时,加入泛型,根据调用方法时传的参数类型,确定具体的数据类型。

public class Person{    private String name;    public Person(String name) {        this.name = name;    }    public <E> void show(E smallName) {        System.out.println("名字为:" + name + ",小名为:" + smallName);    }}public class Demo01 {    public static void main(String[] args) {        Person p = new Person("张三");        p.show("狗娃");   //名字为:张三,小名为:狗娃    }}





点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消