2021-10-29

泛型

在这里插入图片描述
Java中的泛型,只在编译阶段有效。再编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。
在这里插入图片描述

定义泛型接口
interface Generator<T>
{
T next();
}`

在这里插入图片描述
如果实现接口时指定接口的泛型的具体数据类型,这个类实现接口所有的方法的位置都要泛型替换实际的具体数据类型
在这里插入图片描述
在这里插入图片描述

无返回值的泛型方法
public <t> void test(T s)
{
T t=s;
}
有返回值的泛型方法
public <T> T test1(T s)
{
return s;
}
形参为可变参数的泛型方法
public <t> void test2(T……str>
{
for(T s:strs)
{
System.out.println(s);
}
在静态方法中,不能使用类定义的泛型,如果要使用泛型,只能使用静态方法自己定义的泛型。
泛型方法,在调用之前没有固定的数据类型
在调用时,传入的参数是什么类型,就会把泛型改成什么类型
也就是说,泛型方法会在调用时确定泛型具体数据类型

在这里插入图片描述

通配符

当不确定集合中的元素具体的数据类型,使用?表示所有类型
public void test(List<?> list)
{
System.out.println(list);
}

在这里插入图片描述

枚举类

在这里插入图片描述

enum SeasonEnum
{
    SPRING("春天","春天来了"),
    SUMMER("夏天","夏天到了"),
    AUTUMN("秋天","秋天到了"),
    WINTER("冬天","冬天来了");
    private final String seasonName;
    private final String seasonDesc;

    private   SeasonEnum(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    public void showInfo(){
        System.out.println(this.seasonName+":"+this.seasonDesc);
    }
}
public class Test {
    public static void main(String[] args) {
        SeasonEnum sea=SeasonEnum.SPRING;
        sea.showInfo();
        SeasonEnum sea1=SeasonEnum.SPRING;
        System.out.println(sea.equals(sea1));
    }
}

在这里插入图片描述
说明每次执行SeasonEnum.SPRING获得是相同的对象,枚举类中的每个枚举都是单例模式
在这里插入图片描述
在这里插入图片描述

注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IO流

在这里插入图片描述
在这里插入图片描述

File 类

在这里插入图片描述

File f1=new File("D:\\test\\abc\\tt.text");
File f2=new File("D:/test/abc/tt.text");
File f3=new File("D:"+File.separator+"test\\abc\\tt.text");
File f4=new File("D:\\test","abc\\tt.text");

在这里插入图片描述

递归遍历忘文件
public void test(File file){
if(file.isFile()){
System.out.println(file.getAbsolutePath()+"是文件”);
}else{
System.out.println(file.getAbsoultePath()+"是文件夹");
File[] fs=file.listFiles();
of(fs!=null&&fs.length>0){
for(File ff:fs){
test(ff);
}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:文件字节流非常通用,可以用来操作字符的文档,还可以操作任何的其他类型文件(图片,压缩包等等),引用字节流直接使用二进制

package com.max.day01;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileTest {
    public static void main(String[] args) throws FileNotFoundException {
/*testFileInput();*/
        copyFile("D:\\IDEA-2020\\测试\\test.text","D:\\IDEA-2020\\测试\\测试1\\test.text");
    }
public static void testFileInput(){
    try {
        FileInputStream in=new FileInputStream("D:\\IDEA-2020\\测试\\test.text");
        byte[] b=new byte[10];
        int len=0;
        while((len= in.read(b))!=-1){
            System.out.println(new String(b,0,len));
        }
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
    public static void testFileOutput(){
        try {
            FileOutputStream out=new FileOutputStream("D:\\IDEA-2020\\测试\\test1.text");
            String str="This is java !";
            out.write(str.getBytes());//将数据写进内存
            out.flush();//将内存刷进硬盘
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void copyFile(String inPath,String outPath){
        try {
            FileInputStream in=new FileInputStream(inPath);
            FileOutputStream out=new FileOutputStream(outPath);
            byte []b=new byte[100];
            int len=0;
            while((len=in.read(b))!=-1)
            {
                out.write(b,0,len);
            }
            out.flush();
            out.close();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述
注意:定义文件路径时,可以用“/“或者“\”。在写入一个文件时,如果目录下有同名文件将被覆盖。在读取文件时,必须保证该文件已存在,否则出异常。
在这里插入图片描述
注意:缓冲流是把数据缓冲到内存中
在这里插入图片描述
转换流的编码格式要一致,否则会出现乱码
当字节流中都是字符时,将字节流转换成字符流输出效率更高
在这里插入图片描述

    public static void writeToText()throws Exception
    {
        InputStreamReader is=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(is);
        BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\IDEA-2020\\学习\\src\\com\\max\\day02\\tt4.text"));
        String line="";
        while((line=br.readLine())!=null){
            if(line.equals("over")){break;}
            bw.write(line);
        }
        bw.flush();
        bw.close();
        br.close();
        is.close();
    }

验证控制台内容与已存在的文件是否相同

public static void checkUser()throws Exception{
        InputStreamReader is=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(is);
        BufferedReader br1=new BufferedReader(new FileReader("D:\\IDEA-2020\\学习\\src\\com\\max\\day02\\tt4.text"));
        String pUser=br1.readLine();
        String pWord=br1.readLine();
        System.out.println("请输入用户名账号:");
        String nUser=br.readLine();
        System.out.println("请输入登录密码:");
        String nWord=br.readLine();
        if(pUser.equals(nUser)&&pWord.equals(nWord)){
            System.out.println("登录成功!");
        }else {
            System.out.println("用户名密码输入错误!");
        }
    }

将控制台内容写入文件,再与另一个文件作比较

 public static void isExistText()throws Exception
    {
        InputStreamReader is=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(is);
        BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\IDEA-2020\\学习\\src\\com\\max\\day02\\tt5.text"));
        String line="";
        while((line=br.readLine())!=null){
            if(line.equals("over")){break;}
            bw.write(line);
            bw.newLine();
        }
        bw.flush();
        BufferedReader br1=new BufferedReader(new FileReader("D:\\IDEA-2020\\学习\\src\\com\\max\\day02\\tt4.text"));
        String pUser=br1.readLine();
        String pWord=br1.readLine();
        BufferedReader br2=new BufferedReader(new FileReader("D:\\IDEA-2020\\学习\\src\\com\\max\\day02\\tt5.text"));
        String nUser=br2.readLine();
        String nWord=br2.readLine();
        if(pUser.equals(nUser)&&pWord.equals(nWord)){
            System.out.println("登录成功!");
        }else {
            System.out.println("pUser:"+pUser+",pWord:"+pWord);
            System.out.println("nUser:"+nUser+",nWord:"+nWord);
            System.out.println("用户名密码输入错误!");
        }
        br2.close();
        br1.close();
        bw.close();
        br.close();
        is.close();

    }

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:对象的序列化与反序列化使用的类要严格要求一致,包名,类名,类机构等等所有都要一致!

RandomAccessFile类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:每一行的数据后面还有个“\n”算一位
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值