• java基础复习流水账


    1、switch分支表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long

    2、元素默认值

    数据类型 明细 默认值
    基本类型 byte、short、char、int、long 0
    float、double 0.0
    boolean false
    引用类型 类、接口、数组、String null

    3、一个java文件中可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名

    4、两个对象内存图

      

    5、String(字符串创建)

      a.以" "方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份

      b.通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中

    6、ArrayList的remove会删除下标

    7、static内存机制

      

     8、static访问注意事项

      a.静态方法只能访问静态的成员,不可以直接访问实例成员

      b.实例方法可以访问静态的成员,也可以访问实例成员

      c.静态方法中是不可以出现this关键字的

    9、建议工具类的构造器私有化处理

    10、接口注意事项

      a.接口不能创建对象

      b.一个类实现多个接口,多个接口中有同样的静态方法不冲突

      c.一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的

      d.一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可

      e.一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承

    11、所有的类都直接或间接继承java.lang.Object类

    12、为什么StringBuilder比String类拼接字符串更高校

      

      

    13、 解决浮点型运算精度失真问题:BigDecimal b = BigDecimal.valueOf(0.1)

    14、JDK8新增日期类

      a.LocalTIme、LocalDate、LocalDateTime

      b.Instant 时间戳

      c.DateTimeFormatter 格式化

      d.Duration 计算时间间隔、Period 计算日期间隔

      e.ChronoUnit 可用于在单个时间单位内测量一段时间,相当于一个很全的工具类

    15、Collection集合特点

      List系列:添加的元素是有序、可重复、有索引

        a.ArrayList、LinekdList:有序、可重复、有索引

      Set系列:添加的元素是无序、不重复、无索引

        a.HashSet:无序、不重复、无索引;LinkedHashSet:有序、不重复、无索引

        b.TreeSet:按照大小默认升序排列、不重复、无索引

    16、各种数据结构的特点和作用

      a.队列:先进先出,后进后出

      b.栈:后进先出,先进后出

      c.数组:内存连续区域,查询快,增删慢

      d.链表:元素是游离的,查询慢,首尾操作极快

      e.二叉树:永远只有一个根节点,每个节点不超过2个子节点的树

      f.查找二叉树:小的左边,大的右边,但是可能树很高,查询性能变差

      g.平衡查找二叉树:让树的高度差不大于1,增删改查都提高了

      h.红黑树(就是基于红黑规则实现了自平衡的排序二叉树)

    17、List实现类的底层原理

      a.ArrayList底层是基于数组实现的,根据索引查询元素快,增删相对慢

      b.LinkedList底层基于双链表实现的,查询元素慢,增删首尾元素是非常快的

     18、HashSet 1.7版本原理解析:数组+链表+(结合哈希算法)

      

      HashSet 1.8版本原理解析

      

     19、TreeSet自定义排序规则,例:Set<Apple> apples = new TreeSet<((o1, o2) -> Double.compare(o2.getPrice(), o1.getPrice())); (Apple对象省略)

     20、Collection使用场景

      a.如果希望元素可以重复,又有索引,索引查询要快?用ArrayList集合,基于数组的

      b.如果希望元素可以重复,又有索引,增删首尾操作快?用LinkedList集合,基于链表的

      c.如果希望增删改查都快,但是元素不重复,无序,无索引?用HashSet集合,基于哈希链表的

      d.如果希望增删改查都快,但是元素不重复,有序,无索引?用LinkedHashSet集合,基于哈希表和双链表

      e.如果要对对象进行排序?用TreeSet集合,基于红黑树。后续也可以用List集合实现排序

    21、List自定义排序规则,例:Collections.sort(apples, (o1, o2) -> Double.compare(o1.getPrice(), o2.getPrice()); (Apple对象省略)

    22、java.utils.Collections 是集合工具类,用来对集合进行操作,其中两种排序方法如下:

      a.public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。

      b.public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。

    23、不可变集合:调用of方法生成

    24、IO流体系

      

       

    25、commons-io框架

    26、线程

      

     27、线程的6种状态

      新建状态(NEW)-就绪状态(RUNNABLE)-阻塞状态(BLOCKED)-等待状态(WAITING)-计时状态(TIMED_WAITING)-结束状态(TERMINATED)

      

    28、

      

     29、反射的作用-绕过编译阶段为集合添加数据

      -反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以为集合存入其他任意类型的元素的。

      -泛型只是在编译阶段可以约束集合只能操作某种数据类型,在编译成class文件进入运行阶段的时候,其真实类型都是ArrayList了,泛型相当于被擦除了。

      例子:

            ArrayList<Integer> list = new ArrayList<>();
            list.add(12);
            list.add(23);
    
            Class c = list.getClass();
            Method add = c.getDeclaredMethod("add", Object.class);
            boolean rs = (boolean) add.invoke(list, "哈哈");
            System.out.println(rs);
            System.out.println(list);
    
            ArrayList list1 = list;
            list1.add("吼吼");
            list1.add(false);
            System.out.println(list);    

    30、注解

    31、动态代理

    32、

      

  • 相关阅读:
    sem_timedwait
    netty
    嵌入式系统设计师
    新知识点
    20228
    20227
    mdbook
    optparse模块使用
    TiDB集群销毁删除
    configparser模块的使用
  • 原文地址:https://www.cnblogs.com/qyan/p/16117268.html
Copyright © 2020-2023  润新知