学习-01

1. 回顾

  1. java

    1.java基础----软件不要安装在中文目录下。
    (1)JDK环境---版本:1.8---配置环境变量:[java javac命令只能在当前所在目录使用]
    可以在全局使用java和javac命令
    
    (2)写了HelloWorld
    (3)变量 语法: 数据类型 变量名=值;
      [1]数据类型: 基本数据类型和引用数据类型。
         基本数据类型8个: byte short int long float double boolean char.
         引用数据类型:  接口,类,数组,枚举[常量]
      [2]变量名定义规则: 1.有字符,数字,_和$组成 2.不能以数字开头  3.不能使用关键字。  
    (4)运算符:
      [1]赋值运算符:=,+=,-=,*=,/=,%=
      [2]算数运算符: +,-,*,%,/,++,-- [位置可以放在前面和后面]
      [3]关系运算符: >,>=,<,<=,==,!= 返回结果一定是boolean类型
      [4]逻辑运算符: &&,||,!  连接关系运算符
      [5]三目运算符: 表达式?值:值
    优先级: 算数运算符>关系运算符>逻辑运算  
    ==比较: 基本类型:比较的是值,引用类型:比较的引用地址。
    equals()比较: 只能比较引用类型。默认比较的是引用地址。如果想比较值那么必须重写equals方法。因为String,Integer重写了equals
    
    (5)控制语句:
       if(){}else if(){}.....else{} 
       ==if可以单独使用==
    
      switch(表达式){
          case 值: 语句块;break;
          case 值: 语句块;break;
          ....
          default: 
      }
      表达式:得到的结果可以是什么类型? byte,short,int,char,String类型【1.7以后】
        //碰到满足需要的case后,会把该case后的所有case以及default都执行
    
    ​    for(初始化;条件;变化){ //初始化只会执行一次
    ​         循环体。
    ​    } 
    
    ​    while(条件){
    ​       循环条件;
    ​    }
      语句嵌套:
    ​      1.99乘法表。 
     (6) 数据组:
    ​      格式: 数据类型[] 数组名=new 数据类型[长度];
    ​      下标从0~长度-1;
    ​      数组名[0]获取第一个元素
    ​      格式: 数据类型[] 数组名={元素,元素....};
    ​     算法: 排序 [冒泡排序 手写,插入排序,选择排序....] 
    ​      for(int i=0;i<arr.length;i++){ //遍历的次数
                for(int j=arr.length-1;j>i;j--){
                    if(arr[j]<arr[j-1]){
                        int tmp=arr[j];
                        arr[j]=arr[j-1];
                        arr[j-1]=tmp;
                    }
                }
           }
           System.out.println(Arrays.toString(arr)); 
    ​
    
    (7) java OOP面向对象编程。---纵向编程。
       三大特点: 
         封装:使用了private修改类成员,使其外界无法直接访问。一般封装属性。
         继承:extends继承父类中的成员。提高代码的复用性。 
              只能单继承。 
              抽象类: 使用abstract来修饰。不能被实例化,只能被子类继承。
              接口: interface.里面的属性都是静态常量,方法都是抽象方法
         多态: 一个对象具有多种形态。 
               向上转型:子类对象可以转化为父类对象。自动转化 
               向下转型: 父类对象转化为子类对象,需要手动转化
    
    

    2. 高级

    1. 异常: 处理异常的方式:
       try{可能发生异常}catch(){捕获异常}finally{资源关闭}
       throws 抛出异常 写在方法名()后面, 调用者。
    2. 集合体系结构:
        Collection: 
            |--List: 有序,可重复。
               |---ArrayList:底层数据结构:数组,特点:查询快,增删慢。当数组元素满了,动态扩容。把数组中原来的元素复制到新数组。新数组的长度是原来的1.5倍。
               |---LinkedList: 底层双向链表。特点: 查询慢, 增删快。
            |--Set:无序,不可重复。
               |---HashSet:底层哈希算法。
        Map:8
           |---HashMap: 底层1.7和1.8不一样。
             1.7:底层使用数组+链表。链表是头部插入
             1.8: 底层使用数组+链表 或者数组+红黑树,链表使用尾部插入。
             如果冲突个数特多时使用红黑树。当冲突个数高于8个转化为红黑树。
    
        Collections:集合的工具类      
    
    3. IO流:
       InputStream: 字节输入流
       OutputStream:字节输出流
    ==========================文件操作=====================    
       Reader:字符输入流
       Writer:字符串输出流
    =========================文本操作======================
    
    4. 线程
      (1)创建线程的方式:1.继承Thread重写run方法 2.实现Runnable接口 3.实现Callable接口。 Callable有返回值,Runnable无返回值。
      (2)线程的状态:
           NEW--->Start---进入就绪状态---->获取CPU时间片--->进入运行状态--->
           syn--->堵塞状态---sleep|wait--等待状态。----终止状态
    NEW--->RUNABLE--->BLOCKED---->WAITING----TIME_WAITING----TERMINATED  
      (3)线程池:
        创建方式: new ThreadPoolExecutor()原始的线程池。
        单一线程池:
        固定长度的线程池:
        可变线程池:
        延迟线程池:
    
    5. JDK8的新特性:
       1.Lambda表达式: 接口必须是函数式接口。函数接口:有且仅有一个抽象方法。
       2.Stream流:针对集合和数组的操作。Stream流类中包含很多方法。
       3.方法引用:  
       4.时间类:
    
    6. 设计模式: 23种
      [1]单例模式: ---恶寒和懒汉【线程安全问题--->双重校验锁 手写】
      [2]工厂模式:
      [3]动态代理:---JDK动态代理[基于接口]和Cglib动态代理[基于当前类的子类]。
      [4]观察者: 
      [5]建造者模式
      [6]适配器模式:
      [7]桥接模式 等等
    
  2. Mysql数据库:--CRUD 增删改sql语句没有难度。
    查询: 单表查询没有难度 多表查询和嵌套查询。
    select * from t1 join t2 on 链表条件 join t3 on 链表条件 .

posted @ 2023-04-16 12:18  av404  阅读(35)  评论(0)    收藏  举报