1、泛型
泛型分为两种:
1、不限制类型 :不限制和不给定泛型,默认是Object类型是一样的效果,可以简单的理解为将Object类型显示的给指明出来,但是呢,不明确的说是Object类型,而是换了一种形式,使用泛型代替(一个字母)
public static void noAssign() {
List list = new ArrayList();
list.add(1);
list.add("hello");
list.add("word");
for(Object a:list) { //增强for循环 不用创建迭代器直接遍历
System.out.println(a);
}
}
2、限制类型:限制集合中所能存储的数据类型,不用强制类型转换,将错误提前到了编译时期。
public static void assign() {
List<String> list = new ArrayList<>();//后面这个<>可以省略 在1.7之前需要明示 在1.8之后可以不写
//list.add(123); 在编译阶段如果不是指定类型会报错
list.add("你好");
list.add("wrod");
System.out.println(list);
for(String s:list) {
System.out.println(s);
}
//没使用泛型 迭代器取出的就是Object
Iterator<String> it = list.iterator(); //使用泛型限制数据类型的好处,不用强制类型转换,安全机制
while(it.hasNext()) {
//if(it.next() instanceof String) {} //不限制类型的话需要使用instanceof,这时传进来的是Objet类型 还需要强转成String类型
System.out.println(it.next());
}
}
自定义类型:
public static List<User> users(){
List<User>user = new ArrayList<>();
user.add(new User("消防",16));
user.add(new User("我",20));
return user;
}
2、File
概念:File对象是将平时所用到的关于文件相关的操作进行的封装,方便使用
操作:curd(增删改查),创建及删除文件、目录等,改文件名,查看文件、获取文件路径地址
/**
* 文件夹就是目录目录!就是文件夹
* 创建目录/删除
*/
public static void mak() {
File file = new File("F:/QMDownload/tet/hellow/xiao");
//file.mkdir();//创建单个目录(文件夹)
file.mkdirs();//创建多个目录
file.delete();//删除此路径名表示的文件或目录
}
/**
* 创建文件
* @throws IOException
*/
public static void mak02() throws IOException {
File file = new File("F:/QMDownload/tet/hellow/word.txt");
//createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
if(file.exists()) {//判断此路径名表示的文件或目录是否存在。
file.delete();
}
file.createNewFile();
}
/**
* 判断文件类型及其权限
*/
public static void powerTest() {
File file = new File("F:/QMDownload/tet/hellow/word.txt");
System.out.println("判断是否可读:"+file.canRead());
System.out.println("判断是否可写:"+file.canWrite());
System.out.println("判断是否是目录:"+file.isDirectory());
System.out.println("判断是否是文件:"+file.isFile());
}
public static void getFile(String path) {
File file = new File(path);
String[] s1 = file.list(); //调用list方法转换,获得该目录下的文件使用的是数组接收、、返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
// for(String s :s1) {
// System.out.println(s);
// }
for(int i=0;i<s1.length;i++) {//遍历输出 String数组
System.out.println(s1[i]);
}
}
3、字节流写
/**
* 字节流的写
*/
public static void io() throws IOException {
//指定路径
File file = new File("F:\\QMDownload.txt");
file.createNewFile();
OutputStream os = new FileOutputStream(file);
//写数字默认转换成char字符
os.write(12);
os.write(97);
//写字符串,需要调用getByte方法
os.write("haha".getBytes());
//流的操作一定要有关闭
os.close();
}