## 第一章:面向对象
1.类的组成,一般由成员变量,构造方法,成员方法。
2.类是一个抽象的概念,而我们的对象是类的一个实例,对象是具体的。
3.成员变量和局部变量的区别
4.封装。
5.this关键字,每个类中都隐含了一个对象,这个对象就是this。
6.构造方法,创建类的实例时使用,至少创建俩,一个是无参的,一个是全参。
7.静态关键字,随着类的加载而加载
8.生成API文档 /** */文档注释。我们可以使用javadoc命令生成,也可以使用编译器生成
9.如何使用API,
10.代码块的使用。局部代码块,构造代码块,静态代码块的位置及使用。
11.继承:java中的继承只能单继承,不能多继承。但是支持多层继承(类),不能继承私有成员变量和成员方法。也不能继承构造方法,但是可以通过super关键字访问。
12.super,代表父类存储空间的标识,super()可以访问父类的构造方法,子类初始化会优先初始化父类,因为可能会用到父类的数据。而子类中每一个构造方法中都有super();
13.方法的重写:子类中和父类的方法声明一模一样。重写的核心思想:父类怎么写,子类就怎么写。
14.final关键字:修饰类则类不能被继承,修饰方法则方法不能被重写,修饰
变量,变量只能被一次赋值,从而变成了常亮。
15.多态:有继承关系的前提,方法的重写,父类引用指向子类对象。成员变量:编译看左边,运行看右边。成员方法:编译看左边,运行看右边(方法的重写),多态的转型:向上转型,向下转型(为了使用子类特有的功能)
16.抽象类:抽象类中不一定有抽象方法,但是有抽象方法一定是抽象类。抽象类是不能被实例化的。抽象类的子类要么是抽象类,要是重写抽象类中所有抽象方法。关键字abstract。
17.接口:jdk8以后接口中可以定义默认方法和静态方法,jdk9以后可以定义私有方法。默认方法:可以重写也可以不重写,只能被子类对象调用,如果重写则调用重写的,否则调用接口的。静态方法:不能被重写,只能通过接口名调用。私有方法就是给默认方法调用的。接口关键字interface,实现关键字implements
18.类和接口的各种关系:类与类只能实现单继承;类与接口可以单实现,也可以多实现,也可以单继承类多实现接口;接口与接口可以单继承也可以多继承。
19.参数的问题:形参类型和返回值类型,如果形参类型需要一个类,则实际上需要该类的一个对象,如果是一个接口则需要实现该接口的子类对象。返回值类型同理。
20.包的概述:其实就是文件夹,为了方便管理代码。包的命名规则:第一层项目性质(gov,edu,com,org...),第二层一般是企业名称,第三层是项目结构
21.内部类的分类:成员内部类,局部内部类。如何访问成员内部类的对象呢?
外部类名.内部类名 类名 = 外部类对象.内部类对象;
访问非静态方法:外部类名.内部类名 对象名 = new 外部类名.内部类名();
访问静态方法:上面创建的对象访问,或者外部类名.内部类名.方法名();
22.匿名内部类:前提是存在一个接口或者是抽象类。
## 第二章:常用类
大家下去多敲代码,多练习,自然就知道哪些类常用了。
1.冒泡排序:外层比较次数,内层控制每次比较几轮。(必须掌握)
选择排序:拿第一个依次和每一个元素比较。外层控制比较次数,内层控制比较基本并且(交换);
二分查找:首先要求数组有序。定义一个最小值,定义一个最大值,然后根据最大值最小值求出中间值,然后比较。注意:不要让最小值大于最大值。
2.包装类:除了Integer和Character,其余都是首字母变大写就是引用类型,自动装箱和自动拆箱操作。
3.正则表达式:按照指定逻辑过滤字符串。
## 第三章:集合
1.Collection:是集合的超类,它表示的有序的,无需的,有重复的,无重复的。
2.Iterator:迭代器,对集合元素的一个迭代,也是基于集合的存在而存在的。
3.List接口:有序且允许重复的集合。
4.异常,并发修改异常。出现的原因是因为使用迭代器迭代同时使用集合添加,就会出现这种异常。处理方式是使用集合遍历使用集合添加,或者使用迭代器迭代,使用迭代器添加。
5.常见的数据结构:栈,队列,数组,链表,树,哈希表。
6.ArrayList :底层数据结构是数组,所以查询快,增删慢,又因为线程不安全,所以效率高。
7.Vector:底层数据结构是数组,所以查询快,增删慢,又因为线程安全,所以效率低。
8:LinkedList:底层是链表,所有查询慢,增删块,又因为线程不安全,所以效率高。
9.泛型的使用:泛型类,泛型接口,泛型方法。泛型的向上和向下限定,以及通配限定。
10.foreach的使用
11.可变参数的使用
12.Set接口:元素唯一,并且存入元素的顺序和取出元素的数据不一致(无序)。
13.HashSet:底层是哈希表(一种元素是链表的数组),如何保证元素的唯一性,是依赖hashCode和equals方法。
14.LinkedHashSet:底层是哈希表和链表,元素有序(存入和取出元素的顺序)且唯一
15.TreeSet:元素是否有序取决于使用构造方法。如果使用的是无参的,则需要实现自然排序接口,要么就使用重写比较器排序。(如果使用比较排序,那么要分析主要因素和次要因素。)
16.java中的排序方式:一种是自然排序,另一种是比较器排序。
17.Map:是双列的,键是惟一的,数据结构只针对键有效,与值无关。如何遍历map呢?可以获取所有的键集,然后遍历键集,获取值。也可以获取键值对对象集合,然后遍历。
18.Collections:包含了一些关于集合的操作工具。
## 第四章:IO流
1.异常的分类:error,RuntimException运行时异常,编译器异常这种异常如果不处理,则不能编译通过。
2.try...catch的操作。jdk8之后,try()...catch的操作。
3.异常的抛出,throws抛类名,throw抛对象。
4.File:文件路径的一种抽象表示。
5.递归:方法调用本身的现象称之为递归。递归的思想就是:先分解,后合并,找规律,找出口。
6.IO流:就是操作文件的类
7.InputStream:字节输入流的基类,FileInputStream,BufferdInputStream
8.OuputStream:字节输出流的基类,FileOutputStream,BufferedOutputStream
9.编码格式。转换流实际上就是 字符流= 字节流 + 编码集。
10.Writer:字符输出流的基类:OutputStreamWriter ,FileWriter,BufferedWriter
11.Reader:字符输入流的基类:InputStreamReader ,FileReader,BufferedReader
12.标准的输出流: PrintSteam ps = System.out , System.in
13.序列化和反序列化。ObjectOutputStream,ObjectInputStream,这里如果序列化之后,在修改源文件后,反序列化时就会出现一个异常。加一个固定的序列化ID
关键字transient,标注变量使其不被序列化。
14.配置文件类,Properties,其实就是键和值类型都是String一个Map集合。
15.NIO的使用,Path:封装路径,Paths:更象一个工具类,来获取Path,Files对文件的操作。
## 第五章:多线程
1.实现多线程的两种方式:方式一:继承Thread类,方式二:实现Runnable接口。
2.线程的生命周期:1.创建线程 ,2.就绪,3.运行(4.阻塞--->5就绪--->6.运行).7.线程消亡。
3.线程安全相关:synchronized标记同步代码块、也可以标记同步方法。这里需要注意的是,如果是多个线程要安全,注意琐对象的选取。
4.Lock类的使用。
5.死锁的问题,至少掌握一种死锁案例能手写出来。(我去饭馆吃饭,老板不上菜我不给钱,我不给钱老板不上菜。)
6.线程池的操作:循环重复的使用较小的线程。
7.定时器的使用。
## 第六章:网络编程
1.网络编程的三要素:IP地址,Port端口号,协议
2.InetAddress可以获得主机地址和主机名
3.网络协议:
UDP:不安全的协议所以速度快,将数据源和目的封装,不需要建立连接。控制数据大小在64k以内。
TCP:需要建立连接,形成数据传输通道,可以发送大量数据。是通过三次握手完成数据传输,所以是安全的。
4.Socket是唯一标识的端口号和IP地址的组合,和套接字、网络编程属于同一概念。
## 第七章:类加载器与反射
1.了解一下类加载器。
2.反射:对于运行的任意一个类,都能够使用它的任意方法。这种机制称为反射机制。
3.Class类中,又定义了3个封装类:Field变量类,Constructors构造类,Method方法类。getXxx来过去public修饰的对应结构,getDeclaredXxx获取所有对应的构造。此时我们需要给它添加对应的暴力访问,setAccessible。
4.反射的练习题一定要掌握。
5.动态代理:Proxy代理类,需要创建一个代理对象newProxyInstance,该方法需要传递一个代理要做的事情的接口InvocationHandler 。
## 第八章:新特性
1.Lambda表达式,一定要掌握。在Lambda表达式中,要知道如何使用方法引用
2.Stream的使用,一定要掌握。
原文:https://www.cnblogs.com/whitezhang/p/13343276.html