1.oop面向对象
封装继承多态
2.重载,重写
(1)本类,父类和子类(2)重载是在一个类里面,方法名称相同,返回类型可以相同也可以不同,但参数列表必须不同。(3)重写方法名,返回值,参数必须相同,报错范围,权限修饰符必须小于父类。(4)构造方法不能被重写
//重载
public 可同可不同 相同(一定不相同)
//重写
public 相同 相同(相同)
3.接口,抽象类
(1)接口实现,抽象类继承(2)实现多个接口,继承一个父类(3)都不能被实例化(4)抽象类里面可以不包含抽象方法,接口里面一定都是抽象方法(4)抽象类里面可以有构造方法,接口不行(5)抽象方法四个权限修饰符都行,接口只能是public(6)接口里面只有常量
4.深拷贝,浅拷贝
深拷贝完全复制出来一个新的对象,指向的内存地址不一样
浅拷贝和深拷贝还是共用一个内存地址
5.sleep.wait
(1)sleep属于thread类,wait属于object类(2)都释放cpu资源(3)sleep不释放锁,wait释放锁(4)wait未设置自动唤醒的话,需要notify(5)wait 方法必须配合 synchronized 一起使用
6.自动装箱
List<对象> 集合里面装的是对象,但是int是基本数据类型,就把他装箱成integer类型,拆箱成int类型。
7.==,equals
(1)基本类型
二者都是比较值的大小
(2)引用类型
重写前:地址
重写后:字符
8.string用final修饰,不能被修改,里面有native修饰的方法,修改了会导致风险
9.Stringbuffer和Stringbuilder
buffer线程安全,都用的synchonized修饰的,builder线程不安全
单线程下,stringbuilder更快,因为不存在锁的问题
10.final,finally,finalize
(1)final:类(不能被继承) 方法(不能被重写) 变量(常量)
(2)finally:跟着try catch一起用,一定会被执行
(3)finalize:垃圾回收,销毁对象之前会调用,属于Object类里面的方法
11.Object类里面的方法:
(1)toString(2)equals(3)hashcode(4)finalize(5)clone(6)getClass
12.集合体系:
(1)collection
List Set
(2)map
Map
13.ArrayList和LinkedList
(1)一个基于数组,一个基于链表
(2)get,set,数量少的插入使用arrayList
(3)只有大量的修改使用LinkedList性能更高
*ArrayList移动数组,LinkedList有指针,查询要移动指针,慢。插入要往后整体挪动,数组慢。
14.Hashmap
1.8是数组+链表+红黑树
数组:根据key找value
链表:解决hash冲突
红黑树:处理超过8个节点的链表。
15.Hashmap和Hashtable
table线程安全,map线程不安全,Synchronized修饰的,单线程用map,多线程用hashTable
(1)hashmap(containsKey,containsValue)
hashTable(contains,containsKey,containsValue)
(2)hashmap (key 唯一一个null,value随便)
hashTable(key,value都不能为null)
(3)hashmap (默认为16 都是2的n次方)
hashTable(默认为11,2n+1)
16. 线程创建方式
(1)继承Thread类 (2)实现Runnable接口 (3)使用Callable和Future创建线程(4)使用线程池创建线程。
17.线程的生命周期
(1)创建(2)就绪(3)运行(4)阻塞 等待阻塞wait,同步阻塞synchronized,其他阻塞sleep超时join超时等(5)销毁
18.流
(1)字节流
(2)字符流
19.error,exception(运行时异常,编译时异常)
(1)classnotfoundException
(2)IndexOutOfBoundsException
(3)nullpointerException
20.反射
(1)对于任意一个类,可以知道这个类有哪些属性和方法
(2)对于任意一个对象,可以调用他的任意一个方法。
(3)判断一个对象所属于哪一个类,构造任意一个类的对象,判断一个类里面所具有的属性和方法,调用任意一个对象的方法。
21.java序列化
22.http常见的状态码
(1)200:正常
(2)301:url已经移走,response中应该包含新的url
(3)302临时重定向
(4)400 客户端请求有语法错误,服务器不理解
(5)401 请求未被授权
(5)403服务器收到请求,但是拒绝提供服务。
(6)404 请求资源不存在,url地址错误
(7)500程序错误
(8)503服务器不能处理当前客户端的请求,一会可能会好
23.get和post
(1)get请求,请求体会在url中,?分割(login.action?name=zhagnsan&password=123456),post会存放在包体内。
(2)get长度,是1024(其实url长度没限制,但是是浏览器限制的url的长度,分浏览器),post没有长度限制。
(3)post更安全,因为get的地址栏里面会看到账户密码等信息,是明文的,浏览器缓存等信息会暴露,但是post处于方法体内
(4)get向服务器索取数据,post向服务器提交数据(在form表单中)
(5)默认为get请求,他们只是发送机制不同,不是一个取一个发。
24.cookie和session
(1)cookie存储在浏览器,session存储在服务器上。
(2)cookie保存在电脑本地,浏览器在给特定的web服务器发送请求,也会发送所有为该服务器存储的cookie
(3)session存储在web服务器,session对象存储特定用户的属性和配置信息,当用户在web网页之间跳转,存储在session中间的信息不会丢失,会在整个用户会话中保存
(4)不同点:session不受到客户端影响,客户端禁止cookie,那cookie就不能用了。
session能存储各种用户,cookie只能存储String类型的对象。
25.