一.Date类
表示日期格式,精确到毫秒,比较常用的:获取当前的系统时间,以Date格式来表现的
重点:Date和String之间的相互转化,需要用到DateFormat这个抽象类的子类SimpleDateFormat
Date--->String 格式化
步骤:1.创建Date类型的对象
2.创建SimpleDateFormat类型的对象,并指定格式
3.调用SimpleDateFormat对象的format方法,将Date对象作为参数传入
public class DateTest {
public static void main(String[] args) throws ParseException {
Date date = new Date() ;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd") ;
String dateStr = simpleDateFormat.format(date) ;
System.out.println("dateStr:"+dateStr);
//String--->Date:解析
//定义日期文本格式
String str = "2019-10-1" ;
//创建SimpleDateFormat对象
/**
* 注意:
* 当需要将文本日期格式转换称Date格式:文本格式的格式 必须和SimpleDateFormat模式一致,
* 否则无法解析!出现ParseException
*/
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd") ;
//解析
Date date2 = simpleDateFormat2.parse(str) ;
System.out.println("date2:"+date2);//Tue Oct 01 00:00:00 CST 2019
}
}
String--->Date 解析 会抛出异常ParseException
步骤:1.定义一个String文本格式str
2.创建SimpleDateFormat类型的对象,并指定格式,注意格式应该和String类型文本格式一致,否则无法解析
3.调用SimpleDateFormat对象的parse方法,并将str作为参数传入,返回一个Date类型
public class DateTest {
public static void main(String[] args) throws ParseException {
String str = "2019-10-1" ;
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd") ;
Date date2 = simpleDateFormat2.parse(str) ;
System.out.println("date2:"+date2);
}
}
练习,键盘输入出生年月日,测试来到这个世界多少天了
package 临时练习;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的出生年月日:");
String birth = scanner.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birth);
long birthTime = date.getTime();
long nowTime = System.currentTimeMillis();
long day = (nowTime - birthTime)/1000/60/60/24;
System.out.println(day);
}
}
二.Calendar类
这是一个抽象类,与特定字段之间转换提供了一些方法,并为操作日历字段提供类一些方法,不能实例化
public int get(int field): 返回给定日历字段的值
public static final int YEAR:年
public static final int MONTH:月
public static final int DATE:日
里面常用的两个方法
public abstract void add(int field, int amount): 给当前日历类的某个字段设置时间偏移量(-/+)
public final void set(int year, int mouth, int date) 设置日历字段 YEAR, MONTH, DAY_OF_MONTH的值
练习:随意输入一个年份,查询那年的二月份有多少天
import java.util.Calendar;
import java.util.Scanner;
public class CalendarTest {
public static void main(String[] args) {
//1)创建键盘录入对象
Scanner scanner = new Scanner(System.in) ;
//2)接收数据
System.out.println("请输入任意年份:");
int year = scanner.nextInt() ;
//3)创建Calendar类对象
Calendar calendar = Calendar.getInstance() ;
//4)设置时间
calendar.set(year, 2, 1); //其实时间:3月1日
//5)把时间往前推一天即可
calendar.add(calendar.DATE, -1);
//输出
System.out.println("2月份有"+calendar.get(calendar.DATE)+"天");
}
}
三.集合(初)
集合的继承关系图
集合和数组的区别?
1.数组的长度是固定的,集合的长度是可变的
2.数组既可以储存基本数据类型,还可以储存引用数据类型,而集合只能存储引用数据类型
3.数组中的元素必须是同一类型的,而集合中可以储存多个类型的元素
集合的常用方法:
boolean add(Object e):添加单个元素
boolean addAll(Collection c):添加一个集合中的元素
void clear() 暴力删除,不推荐使用
remove(Object o) 删除一个元素
removeAll(Collection c): 移除一个集合中的元素,只要移除一个就算是移除成功
boolean contains(Object o): 一个集合中是否包含指定的元素
boolean containsAll(Collection c): 包含一个集合中的元素,包含所有元素才算是包含
boolean isEmpty(): 判断集合是否为空. 空,就是true
int size(): 获取元素数的方法
Iterator iterator():迭代器 (遍历集合的特有功能)
Object[] toArray() :将集合转换成数组
boolean retainAll(Collection c) :思考假设A集合对B集合取交集,交集的元素进入前一个集合,返回之后如果前一个集合改变 返回true,否则返回false
迭代器:Iterate
源码:
public interface Iterable{
Iterator<T> iterator();
}
//接口
interface Iterator{
boolean hasNext() ;
Object next() ;
}
interface Collection{
}
interface List extends Collection{
}
class ArrayList implements List{
public Iterator<E> iterator() {
return new Itr(); //匿名对象:Itr
}
//内部类:Itr
private class Itr implements Iterator<E> {
//判断是否有下一个元素
public boolean hasNext() {
return cursor != size;
}
//获取下一个迭代的元素
public E next() {
}
}
}
两个方法:hasNext() 判断是否还有下一个元素
next() 得到下一个元素
练习:创建一个学生类,将学生类对象添加到集合中,并用迭代器的方法输出
class Student {
private String name;
private int age ;
无参构造;
有参构造;
set/get方法;
重写的toString方法;
}
public class Test {
public static void main(String[] args) {
//1)创建集合对象
Collection collection = new ArrayList() ;
//2)创建学生对象
Student student1 = new Student("Lucy", 19) ;
Student student2 = new Student("Jack", 21) ;
Student student3 = new Student("Mary", 20) ;
//3)添加
collection.add(student1);
collection.add(student2);
collection.add(student3);
//4)获取迭代器
Iterator it = collection.iterator() ;
//5)遍历
while(it.hasNext()) {
//转换
Student student = (Student)it.next() ;
System.out.println(student.getName()+"---"+student.getAge());
}
}
}