Calendar类抽像类:
Calendar类无法直接创建对象使用
里面有个静态方法叫getInstance();
该方法返回了Calendar类的子类对象
成员方法:
方法名字 说明
get(int filed) 获取指定的日历字段值
set(int filed,int num) 修改指定的日历字段值
add(int filed,int num) 添加或减少指定日历段值
getTime() 将日历类转换为Date对象
成员方法的参数:
int filed:日历类的字段,可以使用Calendar类的静态成员变量获取
YEAR MONTH DATE DAY_OF_MONTH HOUR MINUTE SECOND
public static void main(String[] args) throws ParseException {
示例代码:
//1.使用Scanner类中的方法next,获取出生日期
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的出生日期,格式:yyyy-MM-dd");
String birthdayDateString = sc.next();
//2.使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf.parse(birthdayDateString);
//3.把Date格式的出生日期转换为毫秒值
long birthdayDateTime = birthdayDate.getTime();
//4.获取当前的日期,转换为毫秒值
long todayTime = new Date().getTime();
//5.使用当前日期的毫秒值-出生日期的毫秒值
long time = todayTime-birthdayDateTime;
//6.把毫秒差值转换为天(s/1000/60/60/24)
System.out.println(time/1000/60/60/24);
}
Collection集合:
单列集合 双列集合
每次添加元素只能存储一个元素 每次添加元素可以添加一对数据
list.add(一个); map.put(键,值);
Collection:单列集合最顶层接口
extends关系
list是Collection子接口 set是Collection子接口
ArraryList HashSet
Linkedlist LinkedHashSet
Vector
都是Implements实现
Set: 元素存取无需,不能储存重复元素,无索引
HashSet: 底层是哈希表+(红黑树)结构。
LinkedHasSet: 底层是哈希表+链表双双实现,可以保证元素存取顺序
List: 元素存取有序,可以储存重复元素,有索引
ArrayList: 底层是数组接口实现的,查询快,增删慢
LinkedList: 底层是链表结构实现,查询慢,增删快
Collection接口常用方法:
boolean add(E e) 向集合添加一个元素
void clear() 清空集合所有元素
boolean remove(E e) 删除某个元素
boolean contains(E e) 判断集合中是否包含指定元素
boolen isEmpty() 判断集合是否为空
int size() 获取集合长度
Object[] toArray() 集合转换为数组
队列:先进先出(类似安检,排队先到先出)
数组:
查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组, 通过数组的索引可以快速查询某一个元素。
增删慢:数组的长度是固定的,我们想要增加/删除一个元素, 必须创建一个新数组,把源数组的数据复制过来
ArrayList集合
补充:第一次创建集合对象,底层会开辟一个长度为10的数组空间,我们不断添加元素
扩容规则每次开辟新数组空间都是上一次的1.5倍
链表:
查询慢:链表中的地址不是连续的(不是一个连续空间),每次查询元素都是必须从头开始
增删快:链表中元素记录的每一个元素的内存地址值,增家/删除一个元素(只需要对应的地址更改即可),对链表的整体结构没有影响,所以增删快
链表中的每一个元素也称之为一个节点
一个节点包含了一个数据源(存储数组),两个指针域(存储地址)
查询特点:
会判断查询的索引是否大于集合长度/2
小于:从前向后一个一个查找, 查找到传入的索引位置结束
大于等于:从后向前一个一个查找,查找到传入的索引位置结束
单项链表:链表中只有一个链子,不能保证元素的顺序(存储元素和取出元素的顺序有可能不一致)
双向链表:链表中有两个链子,有一条链子是专门记录元素的顺序,是一个有序的集合
map<K,V>:K代表键得类型 V代表值得类型:双列集合顶层接口,提供共性方法
特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个Key,一个value)
2.Map集合集合中的元素, Key和value的数据类型可以相同, 也可以不相同
3.Map集合中的元素, Key是不允许重复的,value是可以重复的
4.Map
若键重复则保留最后输入的键一对元素
HashMap:底层是哈希表+红黑树结构,元素存取无序
LinkedHashMap:底层是哈希表+双向链表,可以保证元素的存取顺序
Hashtable:
Properties:是(Hashtable)子类:配合专业配置文件使用】
异常概念:
程序在执行过程中,出现非正常的情况, 最终会导致JVM的非正常停止
异常指的并不是语法错误,语法错了,编译不同过
不会产生字节码文件,根本不能运行
异常体系Throwable:
Error:严重的错误,例如服务器宕机,内存溢出
Exception:程序中的异常情况,一般都是程序员所犯得错误,例如索引越近
异常分类:
编译期异常:在写完代码后,编译期直接报错,都是Exception及其子类
运行期异常:在运行程序是,会报的异常,都是RuntimeException子类
异常产生过程:
1.JVM会跟根据异常的原因创建一个异常对象,对象异常包含了(内容,原因,位置)
2.mian方法接收这个异常, main没有异常处理逻辑,就会抛出给main调用者JVM处理
3.JVM接收这个异常,会做两件事:
1.会把这个异常(内容,原因,位置)以红色字体打印到控制台,
2.JVM会终止当前正在执行的Java-->>中断处理
|
|