day20、Map类、File类、递归
Map
Interface Map<K, V>
Map接口下面,已经封装好的实现类
HashMap
TreeMap
Map接口的方法:
增:
V put(K Key , V value)
void putAll ( Map <? extends K, ? extends V> v)
删:
V remove(K key)
改:
V put(K Key , V value)
查:
int size()
boolean isEmpty()
boolean containsKey(Object Key)
boolean containsValue(Object value)
重要的方法:
V get(K key)
Set<K> keySet()
Collection<V> values()
Set<Map.Entry<K, V>> entrySet() 将键值对的map的实体存到set集合中
File类
File是java内置的一个类
文件路径:
相对路径:
./ 代表当前的工作目录
…/ 上一级目录
…/…/ 上两级目录
…/…/…/ 上三级目录
绝对路径:
C:\aa\1.txt
File类的构造方法
File(String pathname)
通过将给定的路径名字字符串,转换为抽象路径名来创建新的File实例
File(String parent, String child)
从父抽象路径和子路径字符串创建新的File实例
static String separator 与系统相关的默认名称 - 分隔符字符
File类的方法
//创建方法
boolean createNewFile()
//当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件
boolean mkdir() //创建单级目录
boolean mkdirs() //创建多级目录
//删除方法
boolean delete() //删除文件或者文件夹
//判断方法
boolean isFile()
boolean isDirectory()
boolean isHidden()
boolean isAbsolute()
boolean exists()
//获取方法 返回值是字符串的方法
String getName()
String getParent()
String getPath()//获得file对象的绝对路径
// 返回是long类型数据
long length();
long lastModified();
//获取当前文件夹下所有的文件
File[] listFiles();
String[] list();
day21、IO流、序列化和反序列化
输入流:
字节输入流 字符输入流
输出流:
字节输出流 字符输出流
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File("")));
BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( new Fiel("")));
byte[] bytes = new byte[4*1024];
int length;
while(( length = bis.read(bytes)) != -1){
bos.write(bytes, 0, length);
}
bos.close();
bis.close();
序列化:
新建类然后创建对象,然后对对象的属性赋值。对象真实存在了,然后可以通过流来将对象存到本地磁盘上面,这就叫序列化。
磁盘上面存的有对象的数据,咱们可以再通过流读取到Java代码中变成对象,这叫反序列化 持久性操作
序列化,从JVM到磁盘,输出流,ObjectOutputStream
FileOutputStream fos = new FileOutputStream("c:/xxx.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(对象);
fos.close();
oos.close();
反序列化
FileInputStream fis = new FileInputStream("c:/xxx.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
类 类的引用 = (类)ois.readObject();
ois.close();
fis.close();
注意事项:
请注意,一个类的对象要想序列化成功,必须满足两个条件:
该类必须实现 java.io.Serializable 接口。
该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的,transient 修饰
day22、常用类
1、StringBuffer
StringBuffer append();
StringBuffer insert(int offset, Object obj)
StringBuffer reverse();
int capacity()
2、枚举类
语法格式
public enum 类 {
各个常量,用逗号隔开
}
//举例
public enum Color {
RED, GREEN, BLUE
}
Color red = Color.RED;
可以有构造方法
enum Ball {
TYPE_BASKETBALL("篮球"),
TYPE_FOOTBALL("足球"),
;
String name;
public Test1 (String name){
this.name = name;
}
}
枚举类的方法
values(); 枚举类中的所有的值
oridnal();每个常量的索引值
valueOf();返回值的指定的字符串的常量
SexEnum sex = SexEnum.FEMALE;
System.out.println(sex);
SexEnum[] sexs = SexEnum.values();
for (SexEnum sexEnum : sexs) {
System.out.println(sexEnum+ " 这个值的索引值:"+sexEnum.ordinal());
}
SexEnum male = SexEnum.valueOf("MALE");
3、包装类
1、1.5之后自动装箱,自动拆箱
2、static String toString(); 将基本数据类型转为 字符串
3、static parse***(); 将一个字符串转为 所对应基本数据类型
4、Math类
Math.E
Math.PI
Math.abs()
Math.max()
Math.min()
Math.ceil(34.6)
Math.floor(35.6)
Math.random()
Math.bound()
5、Random类
Random random = new Random();
random.nextInt();
random.nextBoolean();
6、System类
System类提供 包括标准输入流、标准输出流、错误输出流
long l = System.currentTimeMillis();//返回当前时间
//1970、1、1到当前时间的毫秒数
//获取当前系统的属性
Properties properties = System.getProperties();
7、Date
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date.getYear();
Calendar now = Calendar.getInstance();
now.get(Calendar.YEAR);
now.get(Calendar.MONTH)+1;
calendar.DAY_OF_YEAR;