本页面用于对java学习过程中遇到的新知识与困惑进行记录

Java集合框架

  1. Collection(存放单列数据)
    • List接口 存放数据允许重复
      • ArrayList 底层基于数组数据结构实现
      • LinkedList 底层基于链表数据结构实现
    • Set接口 存放数据不允许重复(去重)
      • HashSet 底层基于Map集合实现
  2. Map(存放多列数据)
    • HashMap
      • JDK1.7基于数组+链表实现
      • JDK1.8基于数组+链表+红黑树实现
    • HashTable

Java注解

Java.Annotation

  1. 注解的作用
    1. 与注释类似,不是程序本身但可以对程序做出解释
    2. 可以被其他程序读取
    3. 注解还具有检查代码规范性的作用,方便找到bug
  2. 注解的格式
    1. @ + 注解名 + 参数值(可选)
  3. 注解使用场合
    1. 可以附加在class, package, method, field 上面等于给他们添加了额外的辅助属性,让我们可以通过反射机制对这些元数据进行访问

内置注解

  1. @Override
  2. @Deprecated
    用于警示代码是不推荐使用的或者可能存在更好的方式
  3. @SuppressWarnings(String str)
    用于镇压warning警告, str为镇压的警告范围

元注解

  1. @Target
    用于描述注解的使用范围
  2. @Retention
    表示需要在什么级别保存该注解信息,用于描述注解的生命周期
    • RUNTIME > class > SOURCE
  3. @Documented
    说明该注解将被包含在javadoc中
  4. @Inherited
    说明子类可以继承父类中的该注解

Java基础

接口

  1. 接口就是抽象方法的集合
  2. 类要通过继承接口来继承接口内的抽象方法
  3. 接口中的方法是隐性抽象的,默认为public abstract,其他修饰符会导致报错
  4. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量,只能是public
  5. 抽象方法无方法体,只有声明
  6. 接口支持多继承
  7. 抽象类和接口的区别
    1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
    2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
    3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
    4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
  • jdk1.8后接口里可以有方法体和静态方法了
  • JDK 1.8 以后,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰。
  • JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去。

集合框架

List

  1. ArrayList
    • 动态数组
  2. LinkedList
    • 双向链表
  3. Vector
    • 向量

set

  1. HashSet
    • 基于HashMap实现的无重复元素的集合
    • 无序
    • 线程不安全
  2. TreeSet

Map

  1. HashMap
    • 散列表,储存键值对映射
    • 不支持线程同步
    • 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口
    • 无序