JAVA总复习-----2
Posted 小鹿可可乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA总复习-----2相关的知识,希望对你有一定的参考价值。
java总复习2
1.接口和抽象类区别
1.1应用场景
抽象类:
对一种事物的抽象:People work
接口:
JDK1.8 包含抽象方法和常量,对行为的抽象
1.2区别
抽象类:
- abstract 修饰类(抽象类) 方法(抽象方法)
- 不能实例化对象
- 实例类extends抽象类{}
- 抽象类相比实例类:
1> 抽象类里可以包含抽象方法,实例类不可
2>抽象不能实例化对象,实例类可以 - 抽象类可以包含抽象方法,含有抽象方法的类->抽象类,抽象类一定含有抽象方法//error
接口:
- interface 修饰
- 接口不能实例化对象
- 接口(JDK1.8):抽象方法: public、abstract ,常量:public 、static 、final
- 使用:class Test implenments 接口1,接口2,接口3
class MyArrayList extends 类 implenments 接口1,接口2{}
2.异常
基础:数组,空指针,反射,mysql ,多线程网络
2.1继承层次谈
Object -> Throwable ->Exception(1.编译期异常2.运行期异常)
2.2异常处理机制
try catch finally throw throws
一个try可对应多个catch
3.Object类中的方法
3.1 clone
clone方法:保护权限
对象拷贝:Cloneable接口
深拷贝形式:拷贝的是基本数据类型(id password)在堆上开辟空间
浅拷贝形式:除了基本数据类型,还有自定义的引用数据类型,有地址对象,存在内存共享
3.2 getClass
获取当前类的Class对象,获得运行时类型
3.3 toString
类对Obgect toString()重写
3.4 equals
equals 和==对象比较上区别:
equals需要子类重写父类equals方法
3.5 finalize
final finally finalize 区别:无关
用的少,用于资源的释放
3.6 hashcode
问题:equals方法 重写hashcode()
4.类加载过程
类加载时机:
- new
- 类名.static成员
- 反射
- main函数所在类优先被加载
- 先初始化父类,再初始化子类
类的初始化顺序:
4.1.装载阶段
什么时双亲委派模型,优点是什么
双亲委派模型,要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。Java平台通过委派模型去加载类。每个类加载器都有一个父加载器。
1、当需要加载类时,会优先委派当前所在的类的加载器的父加载器去加载这个类。
2、如果父加载器无法加载到这个类时,再尝试在当前所在的类的加载器中加载这个类。
优点:
- 因为双亲委派是向上委托加载的,所以它可以确保类只被加载一次,避免重复加载
- 避免核心类被串改,
向上:
从子类到父类依次查找之前是否加载过该类
是:返回加载产物:Class对象
不是:依托父类加载器查找
向下:
从顶级加载器开始,依次尝试加载,如果当前类加载器加载不成功,委托子类加载器尝试加载。如果都加载不了,抛出异常(ClassNotFoundException)
装在阶段产物:Class对象
4.2.链接阶段(验证 准备 解析)
验证:字节码文件格式,JDK版本匹配
准备:静态变量分配内存,并赋值类型默认值
解析:符号引用 转变为直接引用的过程(磁盘->内存)
4.3.初始化阶段
静态变量赋值操作:静态块调用
5.反射
People p1 = new People();
反射:拿到当前类的class对象:
三种方式:
通过Class对象获取构造方法,生成当前类对象
通过Class对象,获取实例方法eat()进行方法调用
6.String类(JDK1.8)
1.String类 的源码实现 成员:char[]
2.字符串比较 :equals()相等
比大小 final class String implements Comparable< String>{ }
final修饰的类不能被继承
3.字符串拼接操作:String +
- 字符串常量+字符串常量 ->编译器优化”hello“+“world” ->“helloword”
- 变量 + 字符串常量 -> println(a+“结果”)
6.1 String StringBuilder StringBuffer区别:
1.单线程:
String :常量+常量 常量+变量(次数少)
StringBuilder:for(10000次):常量+变量(优先选择)
多线程:
StringBuffer
2.String描述 +
StringBuilder.append()
StringBuffer.append()
今天也要好好学习呀~
以上是关于JAVA总复习-----2的主要内容,如果未能解决你的问题,请参考以下文章