Java基础——阶段复习


前言

      这段时间把java基础复习了大半,一直在补前面的基础,准备停下来往前面看看,复习下前面学过的知识,不然过段时间又会非常的模糊。


一、LinkedList集合

      LinkedList属于List家族,底层是由双链表实现,所以增加了对于头和尾结点操作的特殊API——list.getFirst()(得到集合的第一个元素)、list.getLast()(得到集合的最后一个元素)、listr.removeFirst(删除集合的第一个元素)、list.removeLast(删除集合的最后一个元素); 该集合中的元素是有序、可重复、有索引的。

二、TreeSet集合

      如果集合中的数据要进行排序的话就可以用到TreeSet集合,它自带升序排列,除此之外,可以在其中用自带比较器进行比较,即new一个Comparator比较器——

Set<Student2> studentSet = new TreeSet<>(( o1, o2) -> o1.getHeight() - o2.getHeight());

三、stream流

    在一批数据中,想要获得想要的目标元素可以用遍历来获取,但是用stream流就更加方便。最终还是要将流中的数据转存到数组或者集合中去

public class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

       Collections.addAll(list,"张无忌","张三丰","剑豪","张强","TT");
        //filter过滤元素
        Stream<String> tt = list.stream().filter(s->s.startsWith("张"));
        List<String> l1 = tt.collect(Collectors.toList());//将stream流的数据转存到集合中去
        System.out.println(l1);

      }

}

  四、日志框架

       在项目上线之后,无法看到控制台上的报错信息,并且这个信息也不能一直保存下来,所以单纯的依靠控制台很难来维护程序,所以就提出了日志框架;它能记录程序在何时运行出现的问题,并且你可以控制将信息记录在控制台、文件、数据库中,这样就极大的方便了我们维护程序。在使用之前还是需要先配置文件!

package day18;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 掌握Logback日志框架技术
 * 记录程序的运行到控制台、文件、数据库
 * 日志级别:trace<debug<info<warn<error
 * 级别的作用:用于控制系统中哪些日志可以输出,只输出级别不低于设定级别的日志细信息
 */
public class LogBackDemo {
    //创建logback的日志对象,代表了日志技术;名字就用类名,方便后续知道描述的什么地方
   public static final Logger LOGGER =  LoggerFactory.getLogger("LogBackDemo.class");

    public static void main(String[] args) {
            try {
                LOGGER.debug("main方法开始执行了!!!");
                LOGGER.info("我开始记录第二行日志!!");
                int a= 10;
                int b= 0;
                LOGGER.trace("a="+a);
                LOGGER.trace("b="+b);
                System.out.println(a/b);
            } catch (Exception e) {
                e.printStackTrace();
                LOGGER.error("功能出现异常,"+e);
            }

    }
}

五、阶段项目

     这个项目是简易的电影购票系统,将前面学的知识也是结合了起来,难度不大,但是增加了编程的思维,知道怎么去编写来解决问题。

(1)主程序

package day18.Movie;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.*;

public class MovieSystem {
    //准备容器,后续的信息存放
    public static final List<Customer> CUSTOMER_LIST = new ArrayList<>();
    public static final List<Business> BUSINESSES_LIST = new ArrayList<>();
    public static final List<Movie> MOVIES_LIST = new ArrayList<>();

    //拿到用户、商家、电影对象
    public static final Movie movie = new Movie();
    public static final Customer customer = new Customer();
    public static final Business business = new Business("YY","2535385542","123","0102-65245");

    //创建logback的日志对象,代表了日志技术;名字就用类名,方便后续知道描述的什么地方
    public static final Logger LOGGER =  LoggerFactory.getLogger("MovieSystem.class");
    //初始化信息
    static {
        customer.setLoginname("TT");
        customer.setAccount("2535385543");
        customer.setPassword("123");
        customer.setTel("18156544813");
        CUSTOMER_LIST.add(customer);

        business.setAddress("宏泰广场");
        business.setShopName("天天影院");
        BUSINESSES_LIST.add(business);

    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        FirstMenu(customer,business ,in);
    }



    public static void FirstMenu(Customer customer, Business business, Scanner in){
        while (true) {
            System.out.println("========欢迎来到小唐影票购买系统========");
            System.out.println("选择如下操作:");
            System.out.println("1.登录(用户、商家)");
            System.out.println("2.商家入驻");
            System.out.println("3.用户注册");

            int choice = in.nextInt();
            switch (choice){
                case 1:
                    login(customer , business , in);
                    break;
                case 2:
                    BusinessRegister(BUSINESSES_LIST , in);
                    break;

                case 3:
                    CustomerRegister(CUSTOMER_LIST , in);
                    break;

                default:
                    System.out.println("选择有误,请重新输入!");
                    break;
            }
        }
    }

    //登录系统
    private static void login(Customer customer, Business business, Scanner in) {
        //Customer customer1 = new Customer();
        //Business business = new Business();
        while (true) {
            System.out.println("请输入账户:");
            String account = in.next();
            System.out.println("请输入密码:");
            String password = in.next();
            if(account.equals(customer.getAccount())&&password.equals(customer.getPassword())){
                System.out.println("===欢迎"+customer.getLoginname()+"来到小唐影票购买系统!===");
                CustomerMenu(movie , in);
                break;
            }else if(account.equals(business.getAccount())&&password.equals(business.getPassword())){
                System.out.println("欢迎"+business.getLoginname()+"入驻影票购买系统!");
                BusinessMenu(movie ,business ,  in);
                break;
            }else
                LOGGER.error("未找到账户信息,请重新输入!");
        }
    }

    //商户入驻
    private static void BusinessRegister(List<Business> BUSINESSES_LIST,  Scanner in) {
        System.out.println("请输入您的影院名");
        String shopName = in.next();
        business.setShopName(shopName);

        System.out.println("请输入您的影院地址");
        String address = in.next();
        business.setAddress(address);

        System.out.println("设置您的账户名:");
        String loginname = in.next();
        business.setLoginname(loginname);

        System.out.println("设置您的登录账号:");
        String account = in.next();
        business.setAccount(account);

        System.out.println("设置您的密码:");
        String password = in.next();
        business.setPassword(password);

        System.out.println("输入您的影院联系电话");
        String tel = in.next();
        business.setTel(tel);
        BUSINESSES_LIST.add(business);
        System.out.println("入驻成功!愿您生意兴隆!");
    }

    //用户注册
    private static void CustomerRegister(List<Customer> customerList, Scanner in) {

        System.out.println("设置您的账户名:");
        String loginname = in.next();
        customer.setLoginname(loginname);

        System.out.println("设置您的登录账号:");
        String account = in.next();
        customer.setAccount(account);

        System.out.println("设置您的密码:");
        String password = in.next();
        customer.setPassword(password);

        System.out.println("输入您的联系电话");
        String tel = in.next();
        customer.setTel(tel);
        CUSTOMER_LIST.add(customer);
        System.out.println("注册成功!愿您天天享受好的观影的体验!");
        System.out.println(CUSTOMER_LIST);

    }

    public static void BusinessMenu(Movie movie , Business business , Scanner in){
        while (true) {
            System.out.println("===请选择以下操作===");
            System.out.println("1.展示影院详情");
            System.out.println("2.上架影片");
            System.out.println("3.下架影片");
            System.out.println("4.修改影片");
            System.out.println("5.退出");
            int choice = in.nextInt();

            switch (choice) {
                case 1:
                    showCinema(BUSINESSES_LIST);
                    break;
                case 2:
                    newMovie(MOVIES_LIST, movie, in);
                    break;

                case 3:
                    removeMovie(MOVIES_LIST , in);
                    break;
                case 4:
                    modifyMovie(MOVIES_LIST , in);
                    break;
                case 5:
                    System.out.println("欢迎下次光临~~~");
                    return;

                default:
                    System.out.println("选择有误,请重新输入!");
                    break;


            }
        }

    }

    //修改影片
    private static void modifyMovie(List<Movie> MOVIES_LIST, Scanner in) {
            System.out.println("请输入想要修改的片名:");
            String name = in.next();
            for (int i = 0; i < MOVIES_LIST.size(); i++) {
                Movie movie1 = MOVIES_LIST.get(i);
                if(name.equals(movie1.getName())) {
                    System.out.println("请输入想要修改的信息:票价、余票、放映时间、");
                      String message = in.next();
                      switch (message){
                          case "票价" :
                              System.out.println("您想将票价改为:");
                              double price = in.nextDouble();
                              movie1.setPrice(price);
                              System.out.println("票价修改成功!!");
                              break;

                          case "余票" :
                              System.out.println("您想将余票数量改为:");
                              int tickets = in.nextInt();
                              movie1.setTickets(tickets);
                              System.out.println("余票数量修改成功!!");
                              break;

                          case "放映时间" :
                              System.out.println("您想将放映时间改为:");
                              String time = in.next();
                              movie1.setTime(time);
                              System.out.println("时间修改成功!!");
                              break;

                          default:
                              System.out.println("输入有误,请重新输入!");
                              return;

                       }
                    }

                }
    }

    //下架影片
    private static void removeMovie(List<Movie> MOVIES_LIST, Scanner in) {

            System.out.println("请输入想要下架的影片名:");
            String name = in.next();
            for (int i = 0; i < MOVIES_LIST.size(); i++) {
                Movie movie = MOVIES_LIST.get(i);
                if(name.equals(movie.getName())){
                    MOVIES_LIST.remove(i);
                    System.out.println("影片下架成功!!");
                    System.out.println("现有电影:"+MOVIES_LIST);
                    break;

                }else
                    LOGGER.error("未找到该影片!");
            }

    }

    //上架影片
    //在使用set设置对象属性后,要重新建一个对象再添加到容器中,否则会覆盖前面一个对象的属性值
    private static void newMovie(List<Movie> MOVIES_LIST,Movie movie , Scanner in) {
        System.out.println("请输入想要上架的电影名称:");
        String name = in.next();
        movie.setName(name);

        System.out.println("请输入影片主演:");
        String actors = in.next();

        System.out.println("请输入票价:");
        double price = in.nextDouble();

        System.out.println("请输入余票数量:");
        int tickets = in.nextInt();

        System.out.println("请输入影片放映时间:");
        String time = in.next();

        Movie movie1 = new Movie(name , actors , price , tickets , time,0.0);
        MOVIES_LIST.add(movie1);
        System.out.println("电影上架成功!!");
        System.out.println("现有电影:"+MOVIES_LIST);
    }

    //展示影院详情
    private static void showCinema(List<Business> BUSINESSES_LIST) {
        if(BUSINESSES_LIST==null){
            System.out.println("还未有商家入驻!");
        }else
            System.out.println(BUSINESSES_LIST);

    }

    public static void CustomerMenu(Movie movie , Scanner in ){
        while (true) {
            System.out.println("=====可选择以下操作=====");
            System.out.println("1.展示全部影片详情");
            System.out.println("2.根据名称查询电影信息");
            System.out.println("3.评分");
            System.out.println("4.购票");
            System.out.println("5.退出");
            int choice = in.nextInt();
            switch (choice){
                case 1:
                    showMovie(MOVIES_LIST , movie);
                    break;

                case 2:
                    FindMovieByName(MOVIES_LIST , in);
                    break;

                case 3:
                    MovieScore(MOVIES_LIST , in);
                    break;

                case 4:
                    BuyTickets(MOVIES_LIST , in);
                    break;

                case 5:
                    System.out.println("欢迎下次光临~~~");
                    return;

                default:
                    System.out.println("选择有误,请重新输入!");
                    break;

            }
        }
    }

    //购票
    private static void BuyTickets(List<Movie> MOVIES_LIST, Scanner in) {
        while (true) {
            System.out.println("输入您想要看的影片:");
            String name = in.next();
            Movie movie = FindMovieByName1(MOVIES_LIST , name);
            if(movie!=null){
                System.out.println("您想看的影片信息:"+movie);
                System.out.println("输入您想要购票的张数");
                int tickets = in.nextInt();
                if(movie.getTickets()!=0&&tickets<movie.getTickets()){
                    movie.setTickets(movie.getTickets()-tickets);
                    System.out.println("购票成功!");
                    break;
                }else
                    System.out.println("余票数量不够,无法购买,请重新输入购买数量!");
            }else
                LOGGER.error("该影片未上架哎,敬请期待!");
        }
    }

    //电影评分
    private static void MovieScore(List<Movie> MOVIES_LIST, Scanner in) {
        while (true) {
            System.out.println("输入想要查找的影片名:");
            String name = in.next();
            Movie movie = FindMovieByName1(MOVIES_LIST,name);
           if(movie!=null){
                if(name.equals(movie.getName())){
                    System.out.println("输入您想给影片"+movie.getName()+"打评的分数:");
                    double score = in.nextDouble();
                    movie.setScore(score);
                    System.out.println("打分成功!!谢谢您的评价!!");

                    break;
                }
            }else
               System.out.println("未找到影片,请重新输入!");
        }

    }

    //根据名字查询电影
    private static void FindMovieByName(List<Movie> MOVIES_LIST , Scanner in  ) {

            System.out.println("输入您想要查找的影片名:");
            String name = in.next();
            for (int i = 0; i < MOVIES_LIST.size(); i++) {
                Movie movie = MOVIES_LIST.get(i);
                if(name.equals(movie.getName())){
                    System.out.println(movie);
                    break;
                }else
                    System.out.println("未找到影片!");
            }

    }


    private static Movie FindMovieByName1(List<Movie> MOVIES_LIST , String name ) {
        while (true) {

            for (int i = 0; i < MOVIES_LIST.size(); i++) {
                Movie movie = MOVIES_LIST.get(i);
                if(name.equals(movie.getName())){
                    return movie;
                }else
                    System.out.println("未找到影片,请重新输入!");
            }
        }
    }

    //展示全部影片详情
    private static void showMovie(List<Movie> MOVIES_LIST , Movie movie) {
        if(movie.getName()==null){
            System.out.println("还未上架影片!");
        }else
            System.out.println(MOVIES_LIST);
    }

}

(2)类根据主程序就可直接写出。

六、File类

      对于文件的操作,目前学到创建文件、删除文件和其常用的API;其中遍历文件目录也是十分重要的,其中有两个方法——file.list()、file.listFiles(),但是它们都能只能遍历到一级目录,后续就可以用递归来遍历多级目录得到想要的文件地址。

package day19;

import java.io.File;
import java.text.SimpleDateFormat;

/**
 * 掌握关于文件的常用API
 */
public class FileAPI {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\TT\\Pictures\\Camera Roll\\ydd.JPG");//绝对路径
        File file1 = new File("src\\twx.txt");//相对路径

        //获取文件的绝对路劲
        System.out.println("文件绝对路径:"+file1.getAbsoluteFile());//运行后字体变成蓝色才是绝对路径

        //获取文件定义的时候使用的路径
        System.out.println("定义的时候使用的路径:"+file.getPath());

        //获取文件的名称
        System.out.println("文件名:"+file.getName());

        //获取文件的大小
        System.out.println("文件大小:"+file1.length());

        //获取文件最后的修改时间
        long time = file.lastModified();
        System.out.println("最后的修改时间:" +new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").format(time));

        //判断文件是文件夹还是文件
        System.out.println("true为文件,false为文件夹:"+file.isFile());
        System.out.println("true为文件夹,false为文件:"+file.isDirectory());
    }
}

利用递归找到目标文件位置

package day19.recursionDemo;

import java.io.File;
import java.io.IOException;

/**
 * 掌握非规律递归 ,找到目标文件
 */
public class recursionTest1 {
    public static void main(String[] args) {
           FindFile(new File("D:/") , "devcpp.exe");
    }

    /**
     * 寻找目标文件
     * @param file 在哪个路径下寻找
     * @param filename 目标文件名字
     */
    public static void FindFile(File file , String filename){
       if(file!=null&&file.isDirectory()){
          File[] names = file.listFiles();
          //判断是否存在一级目录
           if(names!=null&&names.length>0){
               for (File name : names) {
                   //判断该文件是文件夹还是文件
                   if(name.isFile()){
                       if(name.getName().contains(filename)){
                           System.out.println("找到了目标文件位置:" +name.getAbsolutePath());
                           //启动目标路径程序(只有exe文件才能启动)
                           try {
                               Runtime runtime = Runtime.getRuntime();
                               runtime.exec(name.getAbsolutePath());
                           } catch (IOException e) {
                               e.printStackTrace();
                           }
                       }
                   }else
                       //该文件是文件夹,继续寻找
                      FindFile(name,filename);
               }
           }
       }else
           System.out.println("当前给定路径有误,无法查找!");
    }
}q

七、总结 

       在将近两个月对java基础的学习之后,对于一些基本问题和操作都越来越熟悉了,虽然都是些基础部分,但是全部掌握熟悉也还是有点难度,所以一定要去回头看看,经常复习下,再到后续学习一些框架也就会容易很多了。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值