【学习笔记】JavaSE基础知识整理

面向对象的三大特性(详解)

  • 封装(对象的封装和权限的封装)
  • 继承
  • 多态(补充:向上转型、向下转型)

基本数据类型与常量池(详解)

  • 基本数据类型的大小
  • 自动装箱、自动拆箱、基本数据类型的常量池、Integer.valueOf()
  • 基本数据类型和包装类型在JVM中的存储位置
  • String类的intern()

String类及其源码(详解)

  • String的拼接和对比(地址和值)
  • String类的intern()
  • String类的equals()
  • StringBuilder和StringBuffer(父类、底层的存储、相关方法及其安全性、扩容)
  • String为什么不可变?好处?

final关键字(详解)

  • 修饰类、方法、变量

抽象类和接口(详解)

  • 事物、动作
  • 类、变量、方法的修饰符
  • 证明抽象类可以被实例化
  • JDK1.8中的接口变化

代码块及其执行顺序(详解)

  • 局部代码块、构造代码块、静态代码块

内部类(详解)

  • 外部类、内部类
  • Java中类的加载过程(详解)
  • 成员内部类、局部内部类、静态内部类、匿名内部类

Java的类和包(详解)

  • .java文件
  • main方法
  • 外部类的访问权限
  • Java包的命名规则
  • import

模块间的调用浅析(详解)

  • 同步调用
  • 异步调用
  • 回调
  • 补充:创建线程的三种方式、创建线程的三种方式

Java中的异常(详解)

  • 异常类的继承关系、根据编译把异常分类
  • 异常的两种处理方式
  • 异常调用链、异常链化
  • 自定义异常及其构造函数
  • 异常的注意事项:子类重写父类的throws方法、异常是线程独立的
  • finally中的return(覆盖try/catch中的return)、finally中的异常(覆盖try/catch中的throw exception)

Java泛型详解(详解)

  • 泛型概念、特点
  • 泛型的三种使用方式
  • 泛型通配符
  • 泛型方法的声明
  • 泛型方法与可变参数
  • 静态方法可以使用泛型
  • 指定泛型上下边界(?extends、super)
  • 定义泛型数组

Class类和Object类(详解)

  • Class类的概念、作用
  • 获得Class类对象的三种方式
  • Object类中的方法:clone()、getClass()、equals()、hashCode()、wait()、notify()、notifyAll()
  • clone()、浅拷贝-cloneable接口、深拷贝-重写clone()
  • wait()、notify()的作用

反射详解(详解)

  • 反射的概念、最重要的用途
  • 反射的基础:Class类
  • 判断是否为某个类的实例:instanceof关键字、Class类的isInstance()方法
  • 用Class对象创建对象:直接newInstance()、Constructor对象->newInstance()
  • 用Class对象获取类的方法集合:getDeclaredMethods(),调用方法:method.invoke(实例对象,参数)
  • 用Class对象获取类的构造器集合:getDeclaredConstructors()
  • 用Class对象获取类的成员变量:getFiled()等
  • 利用反射创建数组:Array.newInstance(Class对象, length)

离开IDE,使用javac和java构建项目(详解)

Java枚举类(详解)

  • 枚举类的父类、适用场合
  • 枚举类的使用:存放常量、switch、添加方法、使用接口组织枚举类(分类)
  • 枚举类的集合:EnumSet、EnumMap
  • ......

Java多线程基础总结(详解)

  • 进程和线程的概念、五种状态、创建线程的三种方式
  • Java线程内存模型:哪些私有、哪些共享
  • 线程的优先级:getPriority ()
  • 线程的控制方法:interrupt()、 isInterrupted()、join()
  • Thread类的静态方法:Thread.currentThread()、Thread.interrupted()、Thread.sleep(long msecs)、Thread.yield()
  • 线程组的概念、getThreadGroup
  • 多线程的实现(代码、线程池)
  • 线程的状态转换代码

Java IO流总结(详解)

  • IO流有哪些数据源
  • IO流的分类:字符流(以字符数组读写)、字节流(以字节数组读写)
  • 字符流和字节流的类结构
  • 整合Reader和InputStream:new InputStreamReader(InputStream)(可以指定读取的编码格式,解决乱码问题)
  • 整合Writer和OutputStream:new OutputStreamWriter(OutputStream)(可以指定读取的编码格式,解决乱码问题)
  • IO管道:使用pipedInputStream和pipedOutputStream实现线程间的通信(传输字节流)
  • 字符流和字节流读入与写出数组:CharArrayReader、ByteArrayInputStream

Java序列化与反序列化(详解)

  • 序列化、反序列化的概念
  • 类实现序列化需要实现Serializable接口(接口中是空的,但ObjectOutputStream类的writeObject()方法会判定是否是Enum、Array、Serializable类型)
  • 序列化ID:private static final long serialVersionUID = 1L
  • 序列化无法保存静态变量
  • ArrayList实现了Serializable,重写了read/writeObject()方法实现自定义序列化
  • 没有重写read/writeObject(),默认使用ObjectOutputStream和ObjectInputStream的方法对对象进行序列化及反序列化
  • 总结

Java集合框架梳理(详解)

  • 集合框架结构图
  • List接口(有序重复,允许多个null):ArrayList(非线程安全的动态数组)、LinkedList(双向链表、非线程安全、双端队列)、Vector(线程安全的动态数组、与ArrayList相似)、Stack(继承了Vector)
  • Set接口(无序不重复,只允许一个null):EnumSet(枚举专用)、HashSet(查询速度最快的集合)、TreeSet
  • Map接口:HashMap(快速查询)、HashTable(性能比HashMap低)、TreeMap(有序、红黑树实现)、Properties、EnumMap
  • 哈希表(定义)和哈希码(定义)、哈希值(定义)
  • Queue接口:分为阻塞式队列(主要有ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue)、双端队列(主要有ArrayDeque、LinkedBlockingDeque、LinkedList)(补充)
  • 所有集合类详解:http://calvin1978.blogcn.com/articles/collection.html

Java8新特性(详解、菜鸟)

  • Lanbda表达式:概括地说,就是可以将一个方法传到接口中。(函数式接口就是只有一个抽象方法的接口)
  • 接口的默认方法
  • ......

Java集合详解1:ArrayList、Vector、Stack(详解)

  • ArrayList(实现的接口、操作、原理、安全......)
  • Vector
  • Stack

Java集合详解2:LinkedList、Queue(详解)

  • LinkedList
  • Queue【Deque(ArrayDequ--数组实现的队列)、AbstractQueue(PriorityQueue--数组实现的优先队列)】

Java集合详解3:Iterator、fail-fast机制、比较器(详解)

  • Iterator
  • fail-fast机制(快速失败机制)的概念、产生原因、用途、解决办法    (改变Collection集合的结构是指添加删除元素,不是修改元素值)
  • 集合排序:Comparable自然排序(注意重写方法)和Comparator定制排序的使用。
  • ......

Java集合详解4:HashMap、HashTable(详解)

  • HashMap(数据结构、put、key到哈希码到哈希值的过程、length为2的n次方(oldCap左移一位)、扩容使用for循环、)
  • HashTable(length为2n+1)
  • HashMap和HashTable区别:父类、null、同步

Java集合详解5:LinkedHashMap、LRU(详解)

  • LinkedHashMap:数据结构(在HashMap基础上加入双向链表、header和accessOrder属性、entry添加了属性、非同步、LRU算法)
  • HashMap无序,LinkedHashMap有两种顺序:插入顺序(entry.next实现,false)和访问顺序(entry.before/after实现,true),通过accessOrder控制。
  • LRU算法基于LinkedHashMap的按访问顺序排序的特点、LRU算法的实现(继承,重写removeEldestEntry())
  • ......

Java集合详解6:TreeMap、红黑树(详解、平衡二叉树)

  • 二叉树、二叉查找树(生成二叉查找树时,为了避免失衡,就有了这些平衡二叉树(AVL树、红黑树...))、红黑树
  • TreeMap(特点、插入和旋转操作、删除和移除操作)(有序、非线程安全)
  • 太难了

Java集合详解7:HashSet、LinkedHashSet、TreeSet(详解)

  • HashSet基于HashMap(用key保存元素)
  • LinkedHashSet基于LinkedHashMap,但只能维护插入排序(用key保存元素)
  • TreeSet基于TreeMap,非线程安全,(用key保存元素)(TreeSet中含有一个NavigableMap类型的成员变量m,而m实际上是TreeMap的实例)

Java集合详解8:细节精讲(详解)

  • ArrayList的合理使用
  • 基本数据类型无法泛型化、Arrays.asList(T ...a)
  • list.subList(),subMap()、subSet()
  • compareTo()、equals()、indexOf()、Collections.binarySearch()

Java集合详解:总结(详解)

Java设计模式1:创建型模式(详解、补充)

主要是对象的创建。

  1. 简单工厂模式(一个工厂类根据传入的参数,动态地决定创建哪个对象)
  2. 工厂模式(也叫工厂方法模式)(一个子工厂对应生产一类对象)
  3. 抽象工厂模式(一个子工厂里生产的对象都是兼容的,这些对象组成新的对象)
  4. 单例模式:
    饿汉模式(一开始就创建对象)、
    懒汉模式(单线程,用到的时候才生产对象)、
    饱汉模式(又叫双重检查,用到的时候才生产对象,多线程)、
    静态内部类(最经典)
  5. 建造者模式(创建对象的时候方便地设置属性)
  6. 原型模式(用到对象的时候将原对象浅拷贝一份)

Java设计模式2:结构型模式(详解、补充)

主要是对象的结构设计。

  1. 代理模式【(动态代理,cglib代理)(将被代理对象加一层包装)】(进行方法增强)
  2. 适配器模式:
    默认适配器模式【牛奶适配器实现咖啡接口,所有方法都重写为空方法,适配器子类就舒服了】;
    对象适配器模式【牛奶适配器继承咖啡类,构造方法注入牛奶类对象,方法重写,牛奶适配成咖啡】;
    类适配器模式【牛奶适配器继承牛奶类,实现咖啡接口,方法重写,牛奶适配器变成咖啡类】(进行对象间的适配)
  3. 桥梁模式【画笔(接口)有多个颜色(实现类),图形(接口)有多个形状(实现类),画出不同颜色的不同形状,依靠桥梁(图形里注入画笔对象,画笔就是桥梁)】
  4. 装饰器模式【饮料(抽象类)有红茶(实现类)、绿茶、咖啡,调料(抽象类)有柠檬(装饰器,实现类)、珍珠、芒果,调制不同口味的饮料】(增强类)、【JavaIO流的装饰器,例如DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("")))】
  5. 外观模式(也叫门面模式)【图形有圆、矩形、正方形(含画图方法),常规写法是先创建某种图形再去调用图形的画图方法。而外观模式是,外观类里创建了对象圆、矩形、正方形,定义了各个图形的画图方法,改进写法是可以使用外观对象直接画出各个图形,而不需要画哪个图去new哪个对象】
  6. 组合模式【员工有姓名、电话等属性,同时还有手下的员工集合,这些员工也有姓名电话下属集合。每个员工属性都是相同的,员工集合用List(这就是组合模式)表示】
  7. 享元模式(复用已经生成的对象)

Java设计模式3:行为型模式(详解、补充)

  • 策略模式【画笔(接口)有不同的颜色(实现类),现在要使用不同颜色的画笔去画图,定义一个策略类,注入画笔对象,策略类的对象就可以画图了。类似于桥梁模式】
  • 观察者模式【观察者对象在构造的时候注入主题对象,两者产生连接。实际开发中使用消息中间件来实现观察者模式】
  • 责任链模式【定义一个链表,然后在通过任意一节点后,如果此节点有后继节点,那么传递下去,例如用户参加活动获得奖品,需要先经过规则检测:仅限新用户参加、只能某个地区的用户参加、人数上限等,这些规则就是链表的节点】
  • 模板方法模式【模板方法只负责定义第一步应该要做什么,第二步应该做什么,第三步应该做什么,至于怎么做,由子类来实现。】
  • 状态模式

Java设计模式4:JDK中的设计模式(详解)

Java设计模式5:Spring涉及到的9种设计模式(详解)

Java设计模式:总结(详解)

 

 

转载于:https://my.oschina.net/u/3943244/blog/3012640

你可能感兴趣的:(java,设计模式,数据结构与算法)