1. DateFormat和SimpleDateFormat类
(1) DateFormat与SimpleDateFormat的关系?
SimpleDateFormat 是DateFormat的直接子类。
(2) 为什么需要DateFormat类,它的作用是什么?
能完成字符串和时间的转换。
2. Calendar类
(1) 如何获得一个Calender类的对象?
Calendar cal = new GregorianCalendar();
父类引用指向子类对象
(2) 请例举出Calender类中五个常用的方法?
Cal.set(year,month,day); 注意1月是0;
Cal.get(int filed) 可以用cal.get(Calendar.YEAR)来获取
Cal.getTime()方法将日历对象转换为时间对象。
Cal.setTime()将某个时间对象设置到日历对象中。
Cal.add(int field,int amount) 在日历对象指定的属性上增减
3. Math类
(1) 请你列举出Math类的五个常用方法?
Math.abs(num) 取绝对值;
Math.ceil();向上取整并返回一个double类型的值
Math.floor();向下取整,再返回double类型;
Math.max Math.min 求最大值和最小值;
Math.pow(5,2);求5的二次方;
Math.random() 获得一个[0,1)区间的随机数;
Math.round();四舍五入,返回整型;
Math.sqrt() 开平方。
(2) 如何进行静态导入?
Import static java.lang.Math.*; 可以直接调用Math类的方法,可以不用写类名。如果类中有和包中同名的方法,优先调用本类中的方法。
4. File类
(1) 简述File类的作用?
File类是文件和目录路径名的抽象表现形式。一个File对象可以代表一个文件或目录。可以实现获取文件和目录属性等功能;可以实现对文件和目录的创建、删除等功能。
(2) File类操作目录与文件的常用方法有哪些?
F1.createNewFile() 创建新文件。
F1.delete() 直接从磁盘删除文件或者空目录
F1.exist()检查一个文件是否存在
F. getAbsolutePath()获取绝对路径
getPath()获取相对路径
GetName()获取文件名
ToString() 与获取相对路径功能一样
isFile()检查是否是文件
Length() 文件中内容的字节数。英文字母1个,汉字2个字节。
isDirectory()判断是否是目录
Mkdir()创建单层目录 mkdirs()创建多层目录
getParengFile()获得父级目录
List()返回字符串数组,所有文件和目录
listFile返回的是file对象并打包成数组。
5. 使用递归算法遍历目录结构和树结构
(1) 什么是递归算法?
自己调用自己
(2) 使用递归算法遍历目录结构和树结构的原理是什么?
首先传入需要打印的文件目录对象及层级(第一个层级为0);然后用for循环打印树状结构的层级关系,输出目录或文件的名称。判断File对象是否是目录。如果是目录,用listFiles来获取次级目录下的文件目录,然后遍历这个目录再次调用自己printFile(temp,level+1)。
6. 枚举
(1) 枚举的定义及使用是什么?
只能够取特定值中的一个,使用enum关键字。每一个被枚举的对象其实都是枚举的实例。
Public enum Gender{
男,女 //后面;可写可不写。默认public static final常量。
}
枚举可以包含属性和方法。
Gender sex = Gender.女;
Sex.setName(“张三”);
String str = sex.toString();将枚举转String
Gender g = Enum.valueOf(Gender.class,”男”); 将字符串转为枚举类型。
枚举在switch的使用:
Switch(g){
Case 男:
执行代码;
Break;
Case 女:
执行代码;
Break;
}
在其他类里,枚举可以作为属性/成员变量使用。
Person p = new Person(“marry”,25,Gender.女);
(2) 枚举与类是什么关系?
枚举不是类,没有构造方法。所有的枚举都隐式的继承了java.lang.enum(实质上还是类!)
7. 基本概念_Collection_Set_List接口介绍
(1) 为什么需要集合?
因为数组一旦被创建,其长度就不可更改。而集合是可变的,可以更灵活的存储数据。
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。存放在集合中的数据,被称为元素。
(2) Collection、Set、List接口的特征是什么?
Collection接口存储一组不唯一,无序的对象。
List接口存储一组不唯一,有序(索引顺序)的对象。
Set接口存储一组唯一,无序的对象。
8. List接口ArrayList用法详解
(1) ArrayList的常用方法有哪些?
添加 add(Object obj);
List.size()集合中元素的个数;
isEmpty()判断集合是否为空;
addAll(Collection c) 添加c集合中的所有元素;
List.remove(“根据对象去删除”)或者根据索引去删除;list.remove(new Integer(123));删除整型对象的方法。
List.retainAll(list2)删除两个集合中不相同的元素;
List.contains(“hello”)判断集合中是否有某元素;
List.containsAll(list2) 判断list是否包含list2中所有的元素
List.clear() 清空集合中所有的元素;
List.get(int index)获取指定索引上的元素;
List.set(int index,对象)在指定索引上设置成某对象;
List.add(1,”java”)在指定索引位置上添加元素;
List.indexOf(“java”)查找元素在集合中的位置;
可以使用for-each增强for循环和普通for循环来遍历集合。
For(Object obj:list){
System.out.println(obj);
}
For(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
使用迭代器来遍历集合:
Iterator ite = list.iterator(); //只能正向遍历
While(ite.hasNext()){
Object obj = ite.next();
System.out.println(obj);
}
ListIterator listIte = list.listIterator();//listIterator既可以正向遍历,又可以逆向遍历。
While(listIte.hasNext()){
System.out.println(listIte.next());
}
While(listIte.hasPrevious()){
System.out.println(listIte.pervious());
}
(2) ArrayList集合的特点是什么?
有序,元素不唯一,可扩容。
9. ArrayList_JDK源码分析_1
(1) ArrayList的常用的构造方法有哪些?源码含义是什么?
无参构造方法。创建一个默认长度为0的Object类型的数组;
带参构造方法。创建一个长度为传入参数的Object类型的数组。
(2) ArrayList扩容易原理是什么?
检测空间是否够用
首先调用执行,计算容量。执行完之后的结果为10。
然后创建一个新的长度为10的数组,将元素Arrays.copy进新的数组。将新的数组返回。
第一次调用添加方法的时候,完成Object类型数组的初始化容量,10
10. ArrayList_JDK源码分析_2
(1) ArrayList中的add方法的执行过程是什么?
直接添加 add(对象)
ensureCapacityInternal(size+1);
首先检测数组元素容量是否够用;
elementData[size++] = e;
把元素添加到下标size的位置,然后size加一。
Add(int index,element)
实际是生成新的数组,将老数组的元素按要求进行拷贝。
(2) ArrayList中set和get的方法的作用及执行过程?
Set(int index,Object obj){ //把指定索引位置上的元素做修改。
Public E set(int index,E element){
E oldValue = elementData(index); //根据索引在数组中获取元素
elementData[index] = element; //将新元素设置到数组中索引为index的位置上
Return oldValue;
}
}
Get(int index)根据索引获取元素对象
Public E get(int index){
Return elementData(index); //调用了elementData()的方法
}
//elementData方法的定义
E elementData(int index){
Return (E) elementData[index]; //在Object类型的数组中根据索引取出元素对象。
}
11. LinkedList的特点_链表_JDK源码分析
(1) LinkedList集合的特点是什么?
删除和添加元素效率比较高,数据结构复杂。
(2) LinedList底层所采用的数据结构是什么?
LinkedList的底层数据结构是链表。