Java基础 技术文档
- Java技术学习文档
https://www.liaoxuefeng.com/wiki/1252599548343744/1306580742045730
- jdk搭建
https://jingyan.baidu.com/article/4e5b3e19fb0f2991911e246a.html
- Java基础
(1) 什么是oop
OOP是面向对象编程:
封装:保护内部的操作不被破坏;
继承:在原本的基础之上继续进行扩充;
多态:在一个指定的范围之内进行概念的转换。
封装
良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法, 或子类从父类继承方法,使得子类具有父类相同的行为。
多态
https://blog.csdn.net/qq_36256590/article/details/131846827
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
(2) 什么是aop
面向切面编程
是一种编程思想和技术的结合,它的目标是使软件系统更加模块化、可维护性和可重用性。AOP通过将横切关注点(cross-cutting concerns)从核心业务逻辑中分离出来,实现了对这些关注点的复用和管理。横切关注点是那些在软件系统的多个模块中重复出现的功能或逻辑,例如日志记录、事务管理和安全性检查等。
在Java中,AOP主要通过代理模式和动态字节码生成来实现。代理模式用于创建一个代表原对象的间接对象,以便对该对象的行为进行控制。动态字节码生成则是通过在运行时修改类的字节码来实现新增功能和调整行为。这种技术的应用可以提高代码的可重用性和可维护性,使得通用功能能够被应用于不同的模块。
常用通知类型注解:
1 前置通知 (@Before):前置通知会在目标方法调用之前执行
2后置通知 (@After):后置通知会在目标方法返回或抛出异常之后执行,不论方法执行结果如何都会执行该通知
3返回后通知 (@AfterReturning):返回后通知会在目标方法正常执行且没有抛出异常后执行,还可以获取到方法的返回值
4异常通知 (@AfterThrowing):异常通知会在目标方法抛出指定异常后执行,并能捕获到抛出的异常对象。
5环绕通知 (@Around):环绕通知最为强大,它能够完全控制目标方法的执行过程,在方法调用前后添加自定义的行为,并决定何时以及是否真正执行目标方法。
通过传递给通知方法的 ProceedingJoinPoint 参数来调用 proceed() 方法来执行原方法。
(3) 什么是ioc
在传统的程序开发中,当需要调用对象时,通常由调用者来创建被调用者的实例,
即对象是由调用者主动 new 出来的但在 Sping 框架中创建对象的工作不再由调用者来完成,而是交给ioC 容器来创建,再推送给调用者,整个流程完成反转,因此是控利反转
(4) 什么是抽象类?
1抽象类就是用abstract修饰,且不能被直接初始化的类,但是可以通过子类来初始化 比如:Father father = new Son()对应的,抽象方法就是用abstract修饰的方法
2抽象方法是一种很特殊的方法,它没有方法体,即方法实现代码为空,比如abstract public void fun();抽象方法一般在子类中进行实现,它就好像是在说:我不写代码,我只是声明一个方法名,剩下的交给我的子孙后代(继承类)去做
3抽象类有一个很重要的特点:抽象类可以没有抽象方法,但是如果一个类有抽象方法,那么这个类肯定是抽象类
4为什么会有抽象类解耦,使代码结构更加清晰因为抽象类不能被直接创建为对象,它只是作为一个通用接口来供别人实现和调用,所以这样就使得抽象的代码更加清晰(它只声明方法,不实现方法)
就好比,老板和员工,老板负责分发任务,员工负责去具体的实现任务
(5) 基本数据类型和包装类型的区别
1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是;
2、包装类型是引用的传递;基本类型是值的传递
3、声明方式不同:
基本数据类型不需要new关键字;
包装类型需要new在堆内存中进行new来分配内存空间
4、存储位置不同:
基本数据类型直接将值保存在值栈中;
包装类型是把对象放在堆中,然后通过对象的引用来调用他们
5、初始值不同:
int的初始值为 0 、 boolean的初始值为false
包装类型的初始值为null
6、使用方式不同:
基本数据类型直接赋值使用就好;
包装类型是在集合如 coolectionMap时使用