第21次(常用类)
学习主题:
学习目标:
1. 掌握DateFormat和SimpleDateFormat的使用
2. 掌握Calendar,Math,File类的使用
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应作业:
1. DateFormat和SimpleDateFormat类
(1) DateFormat与SimpleDateFormat的关系?
答:Data是一个抽象类,一般使用它的子类SimpleDateFormat类实现
(2) 为什么需要DateFormat类,它的作用是什么?
答:把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
2. Calendar类
(1) 如何获得一个Calender类的对象?
答:写一个子类继承Calendar类,然后实例化子类获得Calendar的对象
(2) 请例举出Calender类中五个常用的方法?
答:// 使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期
calendar.setTime(new Date());
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+1);//让日期加1
System.out.println(calendar.get(Calendar.DATE));//加1之后的日期Top
3. Math类
(1) 请你列举出Math类的五个常用方法?
答: 1. abs 绝对值
2. acos,asin,atan,cos,sin,tan 三角函数
3. sqrt 平方根
4. pow(double a, double b) a的b次幂
5. max(double a, double b) 取大值
(2) 如何进行静成导入?
答: package cn.sxt;
//以下两种静态导入的方式二选一即可
import static java.lang.Math.*;//导入Math类的所有静态属性
import static java.lang.Math.PI;//导入Math类的PI属性
public class Test2{
public static void main(String [] args){
System.out.println(PI);
System.out.println(random());
}
}
4. File类
(1) 简述File类的作用?
答:代表文件和目录。在开发中,读取文件,生成文件,删除文件,修改文件属性时经常用到
File类操作目录与文件的常用方法有哪些?
第22次(容器)
学习主题:面向对象初步
学习目标:
1 掌握递归算法遍历树形结构
2 掌握枚举的使用
3 掌握集合的概念
4 掌握ArrayList以及底层原理
5 掌握LinkedList以及底层原理
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应作业
1. 使用递归算法遍历目录结构和树结构
(1) 什么是递归算法?
答:在数学与计算机科学中,递归指在函数的定义中使用函数自身的方法。
(2) 使用递归算法遍历目录结构和树结构的原理是什么?
答:通过反复的递归调用实现对整个目录,包括子目录的遍历搜索。
2. 枚举
(1) 枚举的定义及使用是什么?
答: JDK1.5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。
每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。
(2) 枚举与类是什么关系?
答:所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类。
3. 基本概念_Collection_Set_List接口介绍
(1) 为什么需要集合?
答:基于数组并不能满足对于“管理和组织数据的需求”,所以需要一种更强大,更灵活,容量随时可扩的容器装载对象,即集合。
(2) Collection、Set、List接口的特征是什么?
答:Collection表示一组对象,List,Set接口是Collection的子接口,可以使用Collection接口中定义的所有方法。
List是有序,可重复的容器。一般使用Arraylist、LinkedList和Vector实现类
Set是无序,不可重复的容器,一般使用HashSet实现类。
4. List接口ArrayList用法详解
(1) ArrayList的常用方法有哪些?
答:1.数组长度使用.size();
2.增加数组的元素.add(1," ");
.add(" ");
3.修改某个元素的方法.set(1,"B");
4.删除元素的 方法.remove(2," ");
.remove(" ");
5.遍历数组的方法采用for方法
(2) ArrayList集合的特点是什么?
答:可以存放任意数量的对象,长度不受限制
5. ArrayList_JDK源码分析_1
(1) ArrayList的常用的构造方法有哪些?源码含义是什么?
答:ArrayList(),构造一个初始容量为 10 的空列表。
ArrayList(int initialCapacity),构造一个具有指定初始容量的空列表。
ArrayList(Collection<? extends E> c),构造一个包含指定 collection 的元素的列表
ArrayList的Object数组初始化长度为10,如果我们存储满了这个数组,需要存储第11个对象,就会定义新的长度更大的数组,并将原数组内容和新的元素一起加入到新数组中
(2) ArrayList扩容易原理是什么?
答:通过定义新的更大的数组,将旧数组中的内容拷贝到新数组来实现扩容。
6. ArrayList_JDK源码分析_2
(1) ArrayList中的add方法的执行过程是什么?
答: public void add(int index, E element) {
/*判断插入的索引是否符合ArrayList范围,在0 和 size之间,size是ArrayList实际元素个数,不包括底层数组的null元素*/
rangeCheckForAdd(index);
/*扩容机制:判断添加是否需要进行扩容*/
ensureCapacityInternal(size + 1); // Increments modCount!!
/*将旧数组拷贝到一个新数组中,参数:被复制的原数组, 被复制数组的第几个元素开始复制, 复制的目标数组, 从目标数组index + 1位置开始粘贴, 复制的元素个数,*/
System.arraycopy(elementData, index, elementData, index + 1, size - index);
/*将新元素赋予该下标*/
elementData[index] = element;
/*元素个数+1*/
size++;
}
(2) ArrayList中set和get的方法的作用及执行过程?
答:对数据进行设置和获取。
import java.util.Date;
public class User {
private String username;
private String password;
private String gender;
private Date birthday;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
User u = new User();
u.setXXX();
u.getXXX();
想赋值就用u.setXXX(); 取这个类的对象的某个值 就get
7. LinkedList的特点_链表_JDK源码分析
(1) LinkedList集合的特点是什么?
答:查询效率低,增删效率高,线程不安全
(2) LinedList底层所采用的数据结构是什么?
答:双向链表结构,是链表的一种,每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。