1.掌握DateFormat和SimpleDateFormat的使用
2.掌握Calendar,Math,File类的使用
1.DateFormat和SimpleDateFormat类
(1)DateFormat与SimpleDateFormat的关系?
DateFormat是SimpleDateFormat的父类
(2)为什么需要DateFormat类,它的作用是什么?
把时间对象转化为指定格式的字符串
2.Calendar类
(1)如何获得一个Calender类的对象?
父类引用指向子类对象
Calendar cal = new GregrorianCalendar();
(2)请例举出Calender类中五个常用的方法?
set,get,getTime,after,before
3.Math类
(1)请你列举出Math类的五个常用方法?
1、绝对值 Math.abs()
2、向上取整转为double:Math.ceil()
3、向下取整转为double:Math.floor()
4、值的多少次方:Math.pow(值,次数)
5、在给定范围内求随机数:
Int ran =(int)(Math.random()(high-low+1))+low
Math.random(ran)
(2)如何进行静成导入?
Import static java.Math.
4.File类
(1)简述File类的作用?
File类是文件和目录的抽象表示形式,一个File对象可以代表一个文件目录。可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建、删除等功能。
(2)File类操作目录与文件的常用方法有哪些?
File类操作文件方法:
creatNewFile , delete , exists , getAbsolutePath , getPath , getName ,isFile , length ,
File类操作目录方法:
Midir , midirs , getParentFile , delete , parent.delete
分享/讲解/扩展思考
点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。
1 掌握递归算法遍历树形结构
2 掌握枚举的使用
3 掌握集合的概念
4 掌握ArrayList以及底层原理
5 掌握LinkedList以及底层原理
1.使用递归算法遍历目录结构和树结构
(1)什么是递归算法?
自身调用自身的方法
(2) 使用递归算法遍历目录结构和树结构的原理是什么?
创建递归算法,将文件展开,然后自身调用,最后实现层级关系的打印输出
2.枚举
(1)枚举的定义及使用是什么?
只能取特定值中的一个,使用enum关键字
每个被枚举的成员实质就是一个枚举类型的实例,它们默认都是public static final的,可以直接通过枚举类型名直接使用它们
语法:
public enum Gender {
男,女;//;可以加也可以不加
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//枚举与String的转换
//枚举–>String
String str = sex.toString();
System.out.println(str);
//String–>枚举
Gender gender = Gender.valueOf(“男”);
System.out.println(gender);
switch (gender) {
case 男:
System.out.println(“男--------”);
break;
case 女:
System.out.println(“女--------”);
break;
}
(2)枚举与类是什么关系?
所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类!而每个 被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。
3.基本概念_Collection_Set_List接口介绍
(1)为什么需要集合?
如果我们的程序有这样的要求,即只有运行时才能知道对象的类型或数量而且需要我们把这些对象存在某种容器中,这时显然数组就不胜任了。这时我们就必须用到集合框架。java自带的集合框架给了我们一些集合类作为工具。利用这些集合类,我们可以容纳乃至操纵自己的可变数量的自定义对象。
(2)Collection、Set、List接口的特征是什么?
Collection 接口存储一组不唯一,无序的对象
Set 接口存储一组不唯一,有序(索引顺序)的对象
List 接口存储一组唯一,无序的对象
4.List接口ArrayList用法详解
(1)ArrayList的常用方法有哪些?
add , addAll , remove , clear , set , indexOf , size , contains ,
(2)ArrayList集合的特点是什么?
查询效率高,增删效率低,线程不安全
底层采用Object数组来存储元素。
5.ArrayList_JDK源码分析_1
(1)ArrayList的常用的构造方法有哪些?源码含义是什么?
无参构造,有参构造
1、首先调用 ensureCapacityInternal方法,参数树size+1,也就是判断如果要添加这个元素,那么数组的元素就变成了size+1,是否可以存放的下呢?
2、判断数组是否为空,由于构造函数中如果是无参构造函数那么就会创建一个空的数组,如果是空的数组的话,就会将默认数组大小为10。然后进行调用扩容判断。
3、如果数组的元素个数大于数组的长度就要进行扩容。
(2)ArrayList扩容易原理是什么?
1.每次扩容的大小为原来大小的 1.5倍 (当然这里没有包含 1.5倍后大于 MAX_ARRAY_SIZE 的情况)
2.扩容的过程其实是一个将原来元素拷贝到一个扩容后数组大小的长度新数组中。所以 ArrayList 的扩容其实是相对来说比较消耗性能的。
6.ArrayList_JDK源码分析_2
(1)ArrayList中的add方法的执行过程是什么?
Public boolean add(E e){
ensureCapacityInternal(size+1);
elementData[size++] = e;
return true;
}
调用add()方法时,add()方法首先调用ensureCapacityInternal()来判断elementData数组容量是否足够,ensureCapacityInternal()之所以能够判断,是因为它内部调用了ensureExplicitCapacity()方法,这个方法才是真正判断elementData数组容量是否够用的关键方法。如果容量足够,则直接将元素添加到ArrayList中;如果容量不够,则ensureExplicityCapacity()方法内部会调用grow()方法来对数组进行扩容。扩容成功之后,再将元素添加到ArrayList扩容之后的新数组中。
(2)ArrayList中set和get的方法的作用及执行过程?
Set是设置对应索引的值,get是获取对应索引的值
public E set(int index, E element) {
rangeCheck(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
public E get(int index) {
rangeCheck(index);
return elementData(index);
}
7.LinkedList的特点_链表_JDK源码分析
(1)LinkedList集合的特点是什么?
链表:底层使用双向链表实现。在该类中包含了头结点和尾部节点的引用。
First 和 last 可以实现双向的遍历。
优点:插入和删除元素效率高,前提是先找到插入和删除的位置,这个查找的过程效率低。 根据内容查找元素,根据索引查找元素效率低。遍历元素效率低。
(2)LinedList底层所采用的数据结构是什么?
双向链表结构