华清远见-重庆中心-JAVA高级阶段技术总结

       在JAVA高级阶段时我们学习了许多我们常用到的类,如:关于日期的Datle类,SimpleDateFormat类,Calendar类。关于文件的File类, 异常中的处理异常。集合中Collection接口(List接口,Set接口),Map接口。IO流,线程等等。

日期类

SimpleDateFormat类:用于格式化日期的类。

Calendar类:表示日历的类,包含了很多日历相关的信息。

从2022/12/1日起开始三天打鱼俩天晒网,输入2022/12/1日之后的日期判断是在打鱼还是在晒网

 String patte="yyyy/MM/dd";
        //(指定日期格式为yyyy/MM/dd)
        SimpleDateFormat spf=new SimpleDateFormat(patte);
        Date date=spf.parse("2022/12/1");
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入时间");
        String date1=sc.nextLine();

      Date date2=spf.parse(date1);
      ///(根据你输入的日期的毫秒数减去2022/12/1的毫秒数)
      long sum=date2.getTime()-date.getTime();
      //判断相差的天数%5是否小于3
      if((sum/1000/3600/24)%5<3){
          //小于3说明在打鱼
          System.out.println(date1+" 在打鱼");
      }else {
          //否则在晒网
          System.out.println(date1+" 在晒网");
      }

 运行结果

 

文件类File

Java中的File类,表示本地硬盘中的文件(文件和目录)的一个类。 通过这个类创建的对象,可以操作对应的文件。

复制一个文件夹

定义复制单文件的方法

 /*
    * 定义单文件的方法
    * */
    public static void copyFile(File source,File target){
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {
            fis=new FileInputStream(source);
            fos=new FileOutputStream(target);

            byte[] bytes=new byte[1024*1024*8];

            int count=fis.read(bytes);
            while (count!=-1){
                fos.write(bytes,0,count);
                count=fis.read(bytes);
            }
        }catch (FileNotFoundException e){
            System.out.println("文件不存在"+e);
        }catch (IOException e){
            System.out.println("读写异常"+e);
        }finally {
            try {
                if(fis!=null){
                    fis.close();

                }
                if(fos!=null){
                    fos.close();
                }
            }catch (IOException e){
                System.out.println("关闭流异常"+e);
            }
        }

 定义复制文件夹方法

 /*
    * 定义复制文件夹方法
    * */
    public static void copyDir(File source,File target){
        //如果是文件,调用单文件复制方法
        if(source.isFile()){
            copyFile(source,target);
        }else {
            //创建要复制的文件夹
            target.mkdir();
            //展开原文件夹
            for (File child : source.listFiles()) {
                //定义复制后的新目标文件
                //这里使用File(File parent,String child)
                File newTarget=new File(target,child.getName());//复制过去的文件要与原文件相同
                //递归
                copyDir(child,newTarget);
            }
        }
    }

main方法

public class Copy {
    public static void main(String[] args) {
        File source = new File("E:\\文件");
        File target = new File("E:\\文件副本");
        //copyFile(source, target);
        copyDir(source,target);
    }

异常

当程序没有按开发人员的意愿正常执行,中途出现错误导致程序中断,出现这种情况,就称为异常

异常在程序中以对象的形式存在。当代码执行过程中出现异常,虚拟机会自动创建一个异常对象,如果 没有对象该异常对象进行处理,就会导致程序中断,不再执行后续代码。

异常的分类

 

处理异常

方式一:try-catch-finally语句

try{
//可能出现异常的代码
}catch(异常类 异常对象){
//如果出现异常对象,且与catch小括号中的异常类型匹配,就会执行这里的代码
}catch(异常类 异常对象){
//如果出现异常对象,且与catch小括号中的异常类型匹配,就会执行这里的代码
}finally{
//无论程序是否会抛出异常,都要执行的代码
}

执行流程

 

方式二:throws关键字

public class Test{
public void fun() throws InterruptException{//这时该方法就会有一个声明:该方法可能
会抛出异常
//这句话直接写完后,会报错,因为sleep()方法可能会抛出InterruptException异常,属于
编译时异常,必须要处理
Thread.sleep(500);
}
}

集合

 

Collection接口

该接口有两个核心子接口:List和Set

ArrayList实现类:采用数组实现的集合

例如:模拟"斗地主"游戏发牌

package Honework1or2;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        final ArrayList<String> list = new ArrayList<>();
        final ArrayList<String> list1 = new ArrayList<>();
        final ArrayList<String> list2 = new ArrayList<>();
        final ArrayList<String> list3 = new ArrayList<>();
        final ArrayList<String> list4 = new ArrayList<>();

        String[] colours = new String[]{"♥", "♣", "♠", "♦"};
        String[] sd = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};

        for (int i = 0; i < colours.length; i++) {
            for (int j = 0; j < sd.length; j++) {
                list.add(colours[i] + sd[j]);
            }
        }
        list.add("大王");
        list.add("小王");

        Collections.shuffle(list);

        Random rd = new Random();
        int c = list.size();
        int w = 1;
        int w1 = 1;
        int w2 = 1;


        for (int i = 0; i < c; i++) {
            final int n = rd.nextInt(list.size());
            if (w < c/3) {
                list1.add(list.get(n));
                w++;

            } else if (w1 < c/3) {
                list2.add(list.get(n));
                w1++;

            } else if (w2 < c/3) {
                list3.add(list.get(n));
                w2++;
            }else {
                list4.add(list.get(n));

            }
            list.remove(n);

        }

            System.out.println("玩家1");
            for (String s : list1) {
                System.out.print(s + "\t");
            }
        System.out.println();
            System.out.println("玩家2");
            for (String s : list2) {
                System.out.print(s + "\t");
            }
        System.out.println();
            System.out.println("玩家3");
            for (String s : list3) {
                System.out.print(s+"\t");
            }
        System.out.println();
            System.out.println("底牌");
            for (String s : list4) {
                System.out.print(s+"\t");
            }
        }

    }

运行结果

 

LinkedList实现类:采用双向链表实现的集合

 

Map接口

·  HashMap实现类

          Map称为映射,数据以键值对的形式保存。保存的是键与值的对应关系。 键称为Key,值称为Value,键不能重复,键允许出现一个null作为键,值无限制。 键和值都是引用类型。 如,yyds就是一个键key,代表了一个含义:“永远单身”即为值value。

IO流

流Stream

将内存中的数据存入到硬盘中,称为写write,也称为输出Output。

将硬盘中的数据存入到内存中,称为读read,也称为输入Input。

FileInputStream文件字节输入流

        在通过FileInputStream对象使用read(byte[] bytes)方法时,每次读取指定数组的字节,将读取到 的字节保存在字节数组中,该方法返回读取到的字节数量。如果最后一次读取的字节数不足字节数 组的大小时,只会将读取到内容覆盖数组中最前的几个元素。所以会导致读取到的内容多于实际内 容

FileOutputStream文件字节输出流

        在通过FileOutputStream对象使用write(byte[] bytes)方法时,会将字节数组中的所有内容写入到 输出流中,在最后一次写入时,可能会写入多余的内容。所以在写入时,最好使用write(byte[] bytes,int off,int lef)方法,表示将字节数组中的内容,从off开始写入len个。

FileReader文件字符输入流

FileWriter文件字符输出流

BufferedReader缓冲字符输入流

     读取文本 

public static void main(String[] args) throws IOException {
        //创建有缓冲区的字符流入对象
        BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\加贝\\Desktop\\华清\\221001.txt"));
        /*String[] strings=new String[100];
        int n=0;*/
        final ArrayList<String> list = new ArrayList<>();
        //判断是否还有字符
        while (br.ready()) {
            final String name = br.readLine();
            list.add(name);
            //读取整行
            //System.out.println(br.readLine());
        }
       br.close();
          //打乱集合中的元素
        Collections.shuffle(list);
        for (int i=0;i<3;i++){
            System.out.println(list.get(i));
        }

BufferedWriter缓冲字符输出流

//如果要追加在new FilrWriter("文件名"true)设置
        final BufferedWriter bw = new BufferedWriter(new FileWriter( "C:\\Users\\加贝\\Desktop\\华清\\作业情况.txt",true));

     // bw.write("");
      //换行
      bw.newLine();

      for (int i=0;i<3;i++){
          bw.write(list.get(i));
          bw.newLine();
      }
      bw.close();

    }
}

 

总结

        经过一周的学习,只能说对这些类容有一定的映像,但离完全掌握还有不小的距离,只能在后面的日子里多多实践,多多温习,做到熟能生巧,也让我对Java越来越感兴趣了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值