JAVA总复习-----2

Posted 小鹿可可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA总复习-----2相关的知识,希望对你有一定的参考价值。

1.接口和抽象类区别

1.1应用场景

抽象类:
对一种事物的抽象:People work
接口:
JDK1.8 包含抽象方法和常量,对行为的抽象

1.2区别

抽象类:

  1. abstract 修饰类(抽象类) 方法(抽象方法)
  2. 不能实例化对象
  3. 实例类extends抽象类{}
  4. 抽象类相比实例类:
    1> 抽象类里可以包含抽象方法,实例类不可
    2>抽象不能实例化对象,实例类可以
  5. 抽象类可以包含抽象方法,含有抽象方法的类->抽象类,抽象类一定含有抽象方法//error

接口:

  1. interface 修饰
  2. 接口不能实例化对象
  3. 接口(JDK1.8):抽象方法: public、abstract ,常量:public 、static 、final
  4. 使用: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.类加载过程

类加载时机:

  1. new
  2. 类名.static成员
  3. 反射
  4. main函数所在类优先被加载
  5. 先初始化父类,再初始化子类
    类的初始化顺序:
    在这里插入图片描述

4.1.装载阶段

什么时双亲委派模型,优点是什么
双亲委派模型,要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。Java平台通过委派模型去加载类。每个类加载器都有一个父加载器。
1、当需要加载类时,会优先委派当前所在的类的加载器的父加载器去加载这个类。
2、如果父加载器无法加载到这个类时,再尝试在当前所在的类的加载器中加载这个类。
优点:

  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的主要内容,如果未能解决你的问题,请参考以下文章

穷吉201771010119总复习

JAVA总复习-----1

Java年度总复习基础部分

JAVA 总复习

Java年度总复习基础部分

Java总复习内容