Java学习2-日期类和Collection集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习2-日期类和Collection集合相关的知识,希望对你有一定的参考价值。
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("狗娃"); //名字为:张三,小名为:狗娃
}
}
以上是关于Java学习2-日期类和Collection集合的主要内容,如果未能解决你的问题,请参考以下文章
Java学习笔记5.1.2 集合 - Collectiont接口