导图社区 java面向对象编程基础
以面向对象为核心的Java基础编程导图方便理解使用,下列思维导图干货满满,分享给大家!
编辑于2021-03-29 15:13:42面向对象编程
1 Java概述
Java核心优势 可移植性/跨平台性
环境变量配置
JDK8.0(1.8)版本的安装
path环境变量配置
eclipse开发环境安装
Java运行机制
运行机制
JVM、JRE、JDK之间的关系
Java se ee me
Java语言基础
标识符
定义Java程序变量、类、方法命名的符号
四大规则
关键字
也叫保留字,特殊含义和用途不可作为标识符使用
关键字
常量
程序运行时不改变值
代表常数
增强程序可读性
声明 final关键字 示例:final int UP=1;
多常量声明:final int UP=1,DOWN=2;
常量名大写必须 UP
变量
示例:int x=10;
变量的作用域
局部变量:类方法体内生效,代码块内生效
成员变量:类范围内整个类有效
数据类型
运算符
程序控制语句
选择语句
迭代语句
跳转语句
面向对象与面向过程(相辅相成的关系)
面向对象
宏观
协作完成,团队任务非个体任务,复杂任务
示例:如何造汽车
面向过程
微观
基于步骤实现功能,适合简单不需要协作任务
示例:如何开车
概念理解
对象:内存中的内存块存贮多个数据
出现是由于数据量的激增需要对数据管理方式进行改进
数组:对应企业的部门制,相同类型属性的数据归类到一组方便调用和管理
对象(object):对应企业项目制, 不同类型数据,方法归类放在一起。(类似集团下的子公司)
类与对象
概念关系
类(class) 是对对象(也叫实例)的抽象
类 是对象模板
对象:object/instance(实例)两个都是一个意思是对象的两个常用命名字本质都是对象的意思
类
属性(field):静态特征,也叫 成员变量。 可以理解为Excel表格的表头
方法:实现某种特定的功能和状态。比如:动物类,方法里包括了跑,睡觉等等
定义方法:
调用:
实例:
方法
作用:完成特定功能的代码片段类似于其他语言的函数
方法重载
作用:一个类中重名的方法,其实都是完全独立不同的方法
构成条件
形参 类型不同时构成
形参 个数不同时构成
形参 顺序不同时构成
方法的重写
子类重写父类的方法
返回值子类小于等于父类类型
访问权限大于等于父类
构造方法
new关键字调用
用于创建新对象和初始化
重载:同方法的重载一致
垃圾回收机制
过程
发现
回收
算法
引用计数法:容易循环引用
引用可达法:根搜索算法
分代垃圾回收机制
年轻代
15周期进入年老代
年老代
两者 满的时候回触发Full GC全局清理,代价大耗损大,影响系统性能
持久代
内存泄漏
this关键字
指代当前对象
区分重名的局部和成员变量。this.a之成员变量a
不能用于static方法
static关键字
静态变量修饰成员变量从属于类
包机制
管理类,相当于类的文件夹
package.cn.xxx
域名倒着写
集成开发环境自助建立
导入包import
继承
子类是父类的扩展
extends
实现代码重用增强开发效率
单继承不同于c++多继承,接口有多继承
可继承父类全部属性和方法但不能继承父类的构造方法
不见得可以直接访问父类的全部属性方法,比如父类私有的属性方法
instanceof 判断左右两边的数据类型是否一致
object类
to string方法
==和equals(地址和类型)方法判断两边是否地址相同类型相同
super关键字
访问调用父类的方法属性
构造调用顺序:子类-父类-object类
final关键字
修饰变量
方法
类
封装
高内聚,低耦合,便于类的扩展和调用
只留较少必要的对外接口,保证高内聚和低耦合
访问权限修饰符,访问权限不一样(对谁可见)在继承中保护父类私有属性等
private
default
protected
public
一般 使用private访问权限
多态
同一方法的调用被不同对象调用表现出不同行为
三要素
继承
方法重写
父类引用指向子类对象
转型
向上转型 自动 子类转父类
向下转型 手动 强制转型
数组
声明方法
for等循环语句通过自增遍历数组
初始化(分配内存空间和赋值)
静态初始化
定义类型赋值,或者new关键字赋值
动态初始化
下标挨个赋值
默认初始化
各类型不同参见教材,每种数据类型有其默认值
Arrays类
抽象类
仅声明没有方法体
abstract修饰
没有实现,父类没有 实现,子类去完成实现。
抽象类的作用是提供子类的设计模板规范,统一。可以理解为工业里面的行业标准
只能被继承,不能用new
网络编程编写程序使联网两台设备进行数据传输
TCP:数据分片发送,利用数据包头进行重组。适用于不容许有传输错误的网络程序设计
UDP:无连接协议,整包发送
TCP,UDP区别
tcp基于连接,udp基于无连接
tcp要求资源多,udp要求资源少
udp程序结构简单
tcp流模式,udp数据报模式
tcp保证数据正确性,udp可能会丢包
tcp保证数据熟悉怒,udp无法保证
URL:表示互联网上某一资源的地址:协议名称+资源名称中间用冒号隔开。
URL类及其方法
Socket通信
Socket类及方法:向网络发出请求和接收请求
ServerSocket类及方法:实现服务器套接字,客户端与服务器端建立连接
网络编程步骤
建立服务端serversocket和客户端Socket
打开连接到socket的输入输出流
按照一定协议对socket进行读写操作
关闭相应资源
UDP编程
DatagramPacket类及方法
DatagramSocket类及方法
JDBC数据库编程D
用于执行SQL语句,为了设计出一种通用的数据库访问接口
与数据库建立联系;发送SQL语句给数据库服务器;处理数据库服务器返回结果
步骤:加载,建立连接,发送语句,释放数据库资源
常用接口及方法
DriverManager 加载数据库驱动
Connection 数据库连接
Statement执行静态SQL语句并返回所产生结果对象
ResultSet执行结果
ResultSetMetaData从数据库查询返回结果集对象和与数据库相关的额外信息。
PreparedStatement接口
CallableStatement作用是以标准形式调用存储过程的方法
事务处理
事务的概念:逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功
JDBC控制事物语句
启动事务语句
回滚事务语句
提交事务语句
多线程
进程:与操作系统而言,可以理解为程序的一次动态执行过程。Windows可以同时进行多个任务。
线程:针对程序而言,迅雷下载同时,还可以查看下载任务列表,互不干扰,两个线程在运行。线程可以理解为程序中的一个运行分支。
进程代码内部数据状态都是独立的,线程公用同一内存空间,同一组系统资源,线程间可能会互相影响。进程间的通信比线程间的通信效率低。
主线程,一启动就运行的线程Thread对象控制。
创建线程方式
继承Thread类
实现Runnable接口
线程生命周期
新建状态-就绪状态-运行状态-阻塞状态(睡眠或挂起等方法下失去了CPU占用权)-死亡状态(run方法执行完毕,抛出Exception或者调用stop方法,但不建议使用stop方法)
线程调度(抢占调度):上一个线程堵塞或结束或出现高优先级相册抢占cpu
线程控制
各个主要方法
重点sleep和wait方法
stop和suspend方法不推荐使用的原因:不安全及死锁
线程优先级
线程同步:多个线程公用一个资源
死锁:两个线程循环依赖一对同步对象时发生死锁:一个进程拿A锁请求B锁,另一个进程拿B锁请求A锁
wait-notigy机制
输入输出流
File类及其常用方法,进行文件创建、删除、重命名等操作
输入流
数据流向:程序—设备
输出流
数据流向:设备—程序
按数据单位处理分类
字节流(可以使任何数据,如文本,图片,视频)
InputStream类及方法 输入流抽象类
OutputStream类及方法 输出流抽象类
FileInputStream类
FileOutputStream类
BufferedInputStream类和BufferedOutputStream类
性能优于FileInputStream和FileOutputStream类
DatalnputStream类和DataOutputStream类数据输入/输出流,允许程序从底层输入流读取Java数据类型。
PrintStream类 打印流
字符流(只能是文本)
Reader类抽象类
FileReadr类
BufferedReader类
Writer类抽象类
FileWriter类
BufferedWrite类
对象序列化
对象通过写出描述自己状态数值来记录自己过程
ObjectInput和ObjectOutput接口及序列化方法
transient关键字对瞬时对象的标明
Java异常处理
Throwable类
Exception子类
运行时异常
系统自检,自处理
非运行时异常
必须处理,否则程序不能编译
Error子类
虚拟机生成并抛出
系统级错误
jvm虚拟机本身错误,不能通过代码处理
致命错误,终止线程,程序无法控制和处理
异常默认处理机制
虚拟机抛出异常到控制台,并终止程序运行
异常处理5关键字
try-catch-finally
try 捕获异常范围
catch捕获异常并处理
方法
finally 出口,无论是否发生异常均执行
throws 暂时抛出异常 异常抛给方法的调用者进行处理
throw 手动抛出异常对象处理
自定义异常
常用类集合类
包装类
数据类型包装成类
自动拆箱自动装箱
就是自动数据类型转换成包装类来回
String类
StringBuffer类
StringBuilder类
及其各种方法
Collection接口及其继承接口
List接口
ArrayList类 可变数组
LinkedList类 链表结构保存对象
Set接口
Map接口
其方法的意义和使用
接口(API)
比抽象类更抽象的抽象类
关键字 interface
规范和具体实现的分离
可以多继承
只定义常量和方法等不变的东西,没有变量
理解为法律法规,全民遵守
比如主板的usb接口定义好了要多少电流,具体怎么实现要对象实现
面向接口编程:需求变化在接口规范下动实现类来最大程度减少工作量和影响