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("狗娃"); //名字为:张三,小名为:狗娃 }}
原文地址:http://blog.51cto.com/13570211/2154134